我想连接两个表 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/