
[英]PHP MYSQL JOIN QUERY 2 Databases, Where table1.id = table2.id, How to display table2.content as table1.id
[英]Join two tables where table1.id equals table2.table1_id, but only display rows from table1.id that cannot be found in table2.table1_id
我正在建立一个奖项表,提名人可以选择多个奖项类别来申请,并针对他们选择的每个奖项回答一系列问题。
我有2张桌子。
第first table
包含奖项的奖项类别:
id: 1、2、3,...
名称: award1,award2,award3,....
second table
包含带有被提名人ID,问题ID和奖励类别的答案:
ID:
answer_id: 1、2、3,...
nominee_id:1,1,2 ,...
问题ID: 1,2,1,...
category_id: 1、3、1,...
答案:答案1,答案2,答案3,...
我需要的是一个查询,该查询可以显示被提名人已经提交了答案的奖励类别,以及第二个查询,可以显示被提名人仍然可以申请的奖励类别。
因此,使用上面的示例,我希望看到:
编辑:
这是表格,第一个是奖励类别,第二个是答案
如您所见,ID为28的被提名人共回答了16个问题,每个奖项类别有8个问题,ID为5和6。
我想要的输出是:
a)显示被提名人28进入的类别的名称。在这种情况下,品牌参与度(id:5)和企业社会企业(id:6)
b)呈现一个仅包含被提名人28尚未进入的类别的下拉菜单。 在这种情况下,奖励类别ID为7-8。
尝试如下查询
查询1
nominee_id 1已应用于award1和award 3
select table1.*,table2.nominee_id,table2.answer_id,table2.question_id,
table2.category_id,table2.answer from table1
inner join table2 on table1.id = table2.category_id
查询2
nominee_id 1仍然可以申请裁决2,裁决4,...
select table1.*,table2.nominee_id,table2.answer_id,table2.question_id,
table2.category_id,table2.answer from table1
inner join table2 on table1.id <> table2.category_id
我假设使用字段,请忽略不需要的字段。
基于Sameer的答案,我建议:
第一个查询(具有参与性的类别;与Sameer的类别有效)
SELECT table1.*, table2.nominee_id, table2.answer_id, table2.question_id, table2.category_id, table2.answer
FROM table1
JOIN table2 ON table2.category_id = table1.id
第二个查询(类别,无参与;“噪音”少)
SELECT table1.*
FROM table1
LEFT JOIN table2 ON table2.category_id = table1.id
WHERE table2.category_id IS NULL
第二个查询使用LEFT JOIN
工作方式:如果在table2中找不到匹配的行,则结果内的所有列都将设置为NULL
。 作为连接标准说table2.category_id = table1.id
table2.category_id
只能是NULL
如果table1.id
为NULL
或不存在的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.