我不太擅长进行查询。那么有人可以为这个查询解释并帮助我吗?
我需要内部联接2个表“ Slaap”和“ Eten”。我需要ID = 5的所有'eten'和我需要ID = 5的所有'Slaap'。我只能通过UNION实现此功能,但这是我不想要的,因为此查询用于进行最新活动,因此我可以使用订单,但因为联盟我不能。
这是我当前的查询:
SELECT e.tijd, e.product_1, e.product_2, e.product_3, s.van, s.tot, s.slaapoptie
FROM users u
LEFT OUTER JOIN eten e on e.user_id = u.id AND e.id = 5
LEFT OUTER JOIN slaap s on s.user_id = u.id WHERE u.id = 5
UNION
SELECT e.tijd, e.product_1, e.product_2, e.product_3, s.van, s.tot, s.slaapoptie
FROM users u
LEFT OUTER JOIN eten e on e.user_id = u.id
LEFT OUTER JOIN slaap s on s.user_id = u.id AND s.id = 5
WHERE u.id = 5
结果
我希望得到相同的结果,但不使用UNION,所以有人为我解释了这个问题,我该如何实现呢?
答案 0 :(得分:1)
我认为这可以满足您的要求
SELECT e.tijd, e.product_1, e.product_2, e.product_3, s.van, s.tot, s.slaapoptie
FROM users u LEFT OUTER JOIN
eten e
ON e.user_id = u.id LEFT JOIN
slaap s
ON s.user_id = u.id AND s.id = u.id
WHERE u.id = 5 AND
(e.id IS NOT NULL OR s.id IS NOT NULL);
请注意,我将5
替换为u.id
。我想这是意图。
WHERE
中的最终条件只是检查是否至少有一个条件匹配。
答案 1 :(得分:0)
您似乎希望用户拥有eten或slaap。 所以你可以做
SELECT e.tijd, e.product_1, e.product_2, e.product_3, s.van, s.tot, s.slaapoptie
FROM users u
LEFT OUTER JOIN eten e on e.user_id = u.id
LEFT OUTER JOIN slaap s on s.user_id = u.id
WHERE u.id = 5
and (e.id = 5 or s.id = 5)
答案 2 :(得分:0)
SELECT * FROM( SELECT e.created_eten, e.tijd, e.product_1, e.product_2, e.product_3, s.created_slaap, s.van, s.tot, s.slaapoptie FROM users u LEFT OUTER JOIN eten e on e.user_id = u.id AND e.id = ? LEFT OUTER JOIN slaap s on s.user_id = u.id WHERE u.id = ? UNION SELECT e.created_eten, e.tijd, e.product_1, e.product_2, e.product_3, s.created_slaap, s.van, s.tot, s.slaapoptie FROM users u LEFT OUTER JOIN eten e on e.user_id = u.id LEFT OUTER JOIN slaap s on s.user_id = u.id AND s.id = ? WHERE u.id = ?
这对我有用