我有两张桌子:
CATALOG:
------------------------------------
| itemID | itemCode | itemName |
------------------------------------
ORDER:
----------------------------------------------
| orderID | itemID_FK | itemPrice | etc... |
----------------------------------------------
我想在两个表格上使用itemName
选择itemPrice
,itemCode
,join
等。
到目前为止一切顺利;但是,与itemID
中的给定CATALOG
对应的行可能不存在于ORDER
表中。在这种情况下,我希望使用第一个表itemName
中的itemCode
,CATALOG
。
这是否可以在单个(复合)语句中使用MYSQL?
修改 这是一个示例表
CATALOG:
------------------------------------
| itemID | itemCode | itemName |
------------------------------------
| 1 | 89873232 | Oats |
| 2 | 32849392 | Beer |
------------------------------------
ORDER:
----------------------------------------------
| orderID | itemID_FK | itemPrice | etc... |
----------------------------------------------
| 213232 | 2 | 3.99 | ... |
----------------------------------------------
我使用以下查询来检索有关项目的完整数据:
SELECT itemID, itemName, itemPrice FROM CATALOG
INNER JOIN ORDER
ON itemID = itemID_FK
WHERE itemID = %d
我需要此加入,因为CATALOG
不包含从ORDER
获得的价格。如果我使用itemID=1
,ORDER
表中将没有相应的条目,查询将失败。如果itemName
ORDER
答案 0 :(得分:1)
只需在两个表之间使用LEFT OUTER JOIN
,因此您将始终拥有与JOIN左侧表格对应的数据:
SELECT C.itemName, C.itemCode, O.itemPrice, ...
FROM CATALOG as C
LEFT OUTER JOIN ORDER AS O ON C.itemID = O.itemID_FK
如果CATALOG
中的ORDERS
中的项目不存在,则上述选择中的所有O.将变为NULL。