簡體   English   中英

連接兩個表,其中table1.id等於table2.table1_id,但僅顯示table1.id中在table2.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,...

我需要的是一個查詢,該查詢可以顯示被提名人已經提交了答案的獎勵類別,以及第二個查詢,可以顯示被提名人仍然可以申請的獎勵類別。

因此,使用上面的示例,我希望看到:

  1. nominee_id 1已應用於award1和award 3
  2. nominee_id 1仍然可以申請裁決2,裁決4,...

編輯:

這是表格,第一個是獎勵類別,第二個是答案 這是獎勵類別表:

這是答案表

如您所見,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.idNULL或不存在的行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM