php - 如何解决这种表连接?

标签 php mysql

我想连接两个表 transaction 和 item 但有些行返回空值,但在数据库中它们有值。我正在使用的 php 中需要这个查询。表和查询如下。 .请帮我。 .

mysql> select * from item;
+----------+-------------------------+-----+--------+
| itemcode | item_abb                | qty | price  |
+----------+-------------------------+-----+--------+
| 02901    | King Bed                |  34 | 150000 |
| 26350    | King Size Dinning Table |  33 | 15000  |
| 33321    | Sofa                    |  30 | 4500   |
| 4526     | chandelier              |  22 | 5000   |
+----------+-------------------------+-----+--------+
4 rows in set (0.00 sec)

mysql> select * from transaction;
+---------------------+-----------+----------+-----------+------+--------------+
| datetime            | transtype | itemcode | prevstock | qty1 | currentstock |
+---------------------+-----------+----------+-----------+------+--------------+
| 2017-04-08 20:49:37 | stockin   | 4526     |        11 |   12 |           23 |
| 2017-04-08 20:50:35 | stockout  | 2901     |        40 |    2 |           38 |
| 2017-04-08 21:00:35 | stockout  | 4526     |        23 |    1 |           22 |
| 2017-04-08 22:24:16 | stockout  | 2901     |        38 |    2 |           36 |
| 2017-04-09 06:41:47 | stockout  | 2901     |        36 |    2 |           34 |
+---------------------+-----------+----------+-----------+------+--------------+
5 rows in set (0.00 sec)

mysql> select * from transaction left join item on transaction.itemcode = item.itemcode;
+---------------------+-----------+----------+-----------+------+--------------+----------+------------+------+-------+
| datetime            | transtype | itemcode | prevstock | qty1 | currentstock | itemcode | item_abb   | qty  | price |
+---------------------+-----------+----------+-----------+------+--------------+----------+------------+------+-------+
| 2017-04-08 20:49:37 | stockin   | 4526     |        11 |   12 |           23 | 4526     | chandelier |   22 | 5000  |
| 2017-04-08 20:50:35 | stockout  | 2901     |        40 |    2 |           38 | NULL     | NULL       | NULL | NULL  |
| 2017-04-08 21:00:35 | stockout  | 4526     |        23 |    1 |           22 | 4526     | chandelier |   22 | 5000  |
| 2017-04-08 22:24:16 | stockout  | 2901     |        38 |    2 |           36 | NULL     | NULL       | NULL | NULL  |
| 2017-04-09 06:41:47 | stockout  | 2901     |        36 |    2 |           34 | NULL     | NULL       | NULL | NULL  |
+---------------------+-----------+----------+-----------+------+--------------+----------+------------+------+-------+
5 rows in set (0.00 sec)

最佳答案

当您使用左联接时,将返回联接左侧表中的所有行。看起来您打算使用内部联接,其中仅存在两个表都具有联接条件的行。

select * from transaction join item on transaction.itemcode = item.itemcode;

关于php - 如何解决这种表连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43301548/

相关文章:

php - MySQL 中可以使用 Subtable 吗?

javascript - 如何限制多次加载同一个js

mysql - 创建虚拟表以与现有表连接?

php - 从选定的数据库中选择选项值

php - OOP概念理解

php - 在 PHP 中创建动态图像

javascript - 在 php 键中使用右方括号

mysql - 使用 LEFT JOIN 从多个表中进行选择

php - PDO - foreach 只更新最后一个

sql - 查询字符串的各种方法?