首页 > 解决方案 > 如何在不使用 UNION 的情况下进行此查询?

问题描述

我不太擅长查询。那么有人可以解释并帮助我解决这个问题吗?

我需要内部加入 2 个表“Slaap”和“Eten”。我需要 ID = 5 的所有“eten”,并且我需要 ID = 5 的所有“Slaap”。我只能使用 UNION 来实现这一点,但这是我不想要的,因为此查询用于进行最新活动,所以我可以使用ORDER BY 但我不能因为 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,所以有人为我解释了这一点,我该如何实现?

标签: mysqlsqldatabasesqlitephpmyadmin

解决方案


我认为这可以满足您的要求:

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);

请注意,我将 替换5u.id。我猜这就是意图。

中的最后一个条件WHERE只是检查至少一个条件匹配。


推荐阅读