我有2张桌子,请考虑以下内容。
ART_ID
ART_NAME
TRA_ID
ART_ID (FK)
TRA_STATUS
我需要Articles
和& Transaction
但是对于来自Transaction
的数据,TRA_STATUS
应该等于'A'
以下是我已经尝试的查询
SELECT ART_NAME
FROM Articles
INNER JOIN Transaction ON Transaction.ART_ID = Articles.ART_ID
WHERE TRA_STATUS='A'
我已经尝试过一个outter join来从两个表中获取数据,但我似乎没有最后一个过滤器,其中TRA_STATUS应该等于'A',如果我只是添加一个where条件它将从Articles中删除数据好。
答案 0 :(得分:2)
我猜你想要查看文章中的所有行,但只查看来自事务的匹配行。
如果是这种情况,则过滤器必须是加入的条件:
SELECT
a.ART_ID,
a.ART_NAME,
t.TRA_ID,
t.TRA_STATUS
FROM
Articles a
LEFT JOIN Transaction t ON t.ART_ID = a.ART_ID AND t.TRA_STATUS LIKE 'A'
如果在WHERE子句中进行过滤,则LEFT JOIN实际上变为INNER JOIN。
答案 1 :(得分:0)
SELECT Articles.ART_ID, ART_NAME,TRA_ID,TRA_STATUS
FROM Articles
INNER JOIN `Transaction` ON `Transaction`.ART_ID = Articles.ART_ID
WHERE TRA_STATUS = 'A';
交易是保留字词。重命名表格或确保使用`。
不要搞砸它答案 2 :(得分:0)
SELECT *
FROM Articles
INNER JOIN Transaction ON Articles.ART_ID = Transaction.ART_ID
WHERE Transaction.TRA_STATUS = 'A'