![](/img/trans.png)
[英]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.