3张桌子:
IMAGES [IDim, title, descr, etc.]
USERS [IDus, name, surname, etc.]
OPERATION [ID, IDim, IDus, status, reserveDate, etc.]
我需要一个查询来获取 IMAGES 的所有行并添加从 OPERATION 表读取的
status
。
status
字段仅有时获得值 'READY'
或 'LOST'
(并且在那个时刻创建了 IMAGES 和 OPERATION 表之间的链接)。
我试过这个不完整和错误的查询:
SELECT i.IDim, i.title, i.descr, o.status
FROM IMAGES AS i, OPERATION AS o
WHERE i.IDim = o.IDim
这只会获取 OPERATION 表中的那些,但是有可能有些图像没有插入到那里。
一种可能性是每次在 IMAGES 中插入新项目时在 OPERATION 中创建一个引用,例如将
status
字段设置为 'NONE'
,但我想避免它。
这个怎么写?
为此你需要一个 LEFT JOIN。
JOIN 已经存在 30 年了,你真的应该开始使用它们
SELECT i.IDim, i.title, i.descr, o.status
FROM IMAGES AS i
LEFT JOIN OPERATION AS o
ON i.IDim = o.IDim