我发现案例 的添加查询列的解决方案 然后来自同一个表,具体取决于列值但是它不能解决我的问题。
我有两张桌子。 表:池
id date title description
------ ---------- -------------- ---------------------
1 2016-11-10 This is pool 1 this is description
表:投票
id date time pool_id option_id uid
------ ---------- -------- ------- --------- ------------------------------
1 2016-11-10 21:22:23 1 1 XodxfBfeRdZsOFRNbJ0AecMgpyo2
2 2016-11-10 21:22:23 1 2 PhbZ675XdZeL59QFKLQq8u1uQyg2
我想通过在查询中传递 uid 来查询输出。
id date title voted
------ ---------- -------------- ---------------------
1 2016-11-10 This is pool 1 YES
答案 0 :(得分:0)
您可以LEFT JOIN
2个表pools
和votes
。然后检查投票中是否存在相应的条目,显示是否否。
为了更好的解释,我在pool table中再创建了一个条目。
INSERT INTO pools VALUES (2, '2016-11-11', 'This is pool 2', 'this is description');
以下查询将为您提供所需的输出:
SELECT p.id, p.date, p.title, IF(v.id IS NOT NULL, 'YES', 'NO') AS voted
FROM pools p LEFT JOIN votes v
ON p.id = v.pool_id
AND v.uid = 'XodxfBfeRdZsOFRNbJ0AecMgpyo2';
如果不存在相应的值,查询说明
LEFT JOIN
将返回LHS表中的行和来自RHS表的NULL。
然后,我们可以在SELECT
语句中添加一项检查,以创建自定义列voted
。
输出
id date title voted
-------------------------------------
1 2016-11-10 This is pool 1 YES
2 2016-11-11 This is pool 2 NO