您好user_table1
和user_table2
我还有jobs
和employers
当我从user_table1获取用户并为他们提取工作和雇主信息时,我的请求有效,但是当我加入用户table2时,它只会从user_table1输出双倍而不是显示第二个表中的用户。
SELECT user_table1.age, user_table1.name, user_table1.lname, jobs.position, jobs.wage, employers.name employers.phone
from user_table1
LEFT JOIN jobs ON jobs.position_id = user_table1.position_id
LEFT JOIN employers ON employers.position_id = jobs.position_id
WHERE user_table1.age < 30
ORDER BY user_table1.age ASC
现在我也尝试添加
SELECT user_table1.age, user_table1.name, user_table1.lname, jobs.position, jobs.wage, employers.name employers.phone
from user_table1
LEFT JOIN jobs ON jobs.position_id = user_table1.position_id
LEFT JOIN employers ON employers.position_id = jobs.position_id
LEFT JOIN user_table2 ON jobs.position = user_table2.position
WHERE user_table1.age < 30
user_table2.status = 4
ORDER BY user_table1.age ASC
换句话说,我需要检查user_table2.status=4
的位置,然后将这些记录与来自user_table1
age less than 30
的所有记录合并,然后从jobs
和{{1这个记录。
答案 0 :(得分:0)
尝试UNIONing你的两张桌子。您需要在ORDER BY
之外指定UNION
子句。 UNION ALL允许重复。如果您不想要欺骗,请移除ALL
并仅使用UNION
。
SELECT * FROM
(
SELECT u.age, u.name, u.lname, jobs.position, jobs.wage, employers.name employers.phone
from user_table1 as u
LEFT JOIN jobs ON jobs.position_id = u.position_id
LEFT JOIN employers ON employers.position_id = jobs.position_id
WHERE u.age < 30
UNION ALL
SELECT u.age, user_table1.name, user_table1.lname, jobs.position, jobs.wage, employers.name employers.phone
from user_table2 u
LEFT JOIN jobs ON jobs.position_id = u.position_id
LEFT JOIN employers ON employers.position_id = jobs.position_id
WHERE u.age < 30
AND u.status = 4
) AS UU
ORDER BY UU.Age ASC
我不清楚你的条件是user_table1和user_table2是否都应该获得30岁的过滤器,以及table2是否应该是唯一一个状态为4的过滤器。根据需要进行修改。