所以我只在另一个字段值不等于0时才能选择字段。
所以,这是正在发生的事情。
我有3个表,它们是 - users
,schools
,campuses
基本上,我需要从这3个表中选择一个用户数据。如果users.campus_id字段不为0,我只想从校园中选择campus_name字段。
所以,像这样伪编码的东西可能会给你一个更好的想法..
查询正在$id
变量中传递,该变量具有一些用户ID。
SELECT users.*, schools.*, (if(users.campus_id != 0) then campuses.campus_name)
FROM users, schools, campuses
WHERE users.id = '$id' (if(users.campus_id != 0) then AND campuses.id = users.campus_id)
答案 0 :(得分:0)
SELECT *
FROM schools,
users LEFT OUTER JOIN campuses
ON users.campus_id != 0
AND users.campus_id = campuses.id
WHERE users.school_id = schools.id
答案 1 :(得分:0)
所以你一起加入三张桌子,你总是希望用户有一所学校,但他们可能没有校园,如果是这样的话,显然什么都不应该显示。
您可以做的最好的事情是在校园内使用 LEFT JOIN 来实现这一目标。
基于以下伪代码的示例:
SELECT u.*, s.*, c.campus_name
FROM users u
INNER JOIN schools s ON u.school_id = s.school_id
LEFT JOIN campuses c ON u.campus_id = c.campus_id
WHERE u.user_id = $userId
答案 2 :(得分:0)
如果我理解正确,您希望显示所有信息,但仅在校园名称存在时显示?如果是这样,我相信以下陈述应该做到这一点:
SELECT `u`.* `s`.* if(`c`.`campus_name` != 0, `c`.`campus_name`, "") as `campus`
FROM `users` as `u`
INNER JOIN `schools` as `s` ON `u`.`school_id` = `s`.`school_id`
LEFT JOIN `campuses` as `c` ON `u`.`campus_id` = `c`.`campus_id`
WHERE `u`.`user_id` = $user_id;
未经测试,从头顶写下,可能是那里的错误