請幫忙編寫這個查詢。這是表圖:帶有兩個鏈接表的SQL查詢
用戶響應爲販賣毒品的具體銷售類型。如何查找針對特定用戶ID在同一銷售類型中響應相同藥物的用戶?
例如:
- 愛麗絲銷售維生素A,維生素B在迴應零售
- 鮑勃銷售維生素A,維生素B在零售和國家應對市場
- 查理維生素B迴應,維生素C在州市場
用戶此響應相同salestype藥
- 愛麗絲是Bob
- 爲Bob是愛麗絲和Charlie
- 爲查理鮑勃
請幫忙編寫這個查詢。這是表圖:帶有兩個鏈接表的SQL查詢
用戶響應爲販賣毒品的具體銷售類型。如何查找針對特定用戶ID在同一銷售類型中響應相同藥物的用戶?
例如:
用戶此響應相同salestype藥
對於用戶通過所有銷售類型銷售相同藥物的示例數據:
SELECT mus.userId
FROM User2SalesType qus
INNER JOIN User2Drug qud ON qus.UserId = qud.UserId
INNER JOIN User2SalesType mus ON qus.SalesTypeId = mus.SalesTypeId
AND mus.UserId != qus.UserId
INNER JOIN User2Drug mud ON qud.DrugId = mud.DrugId
AND mus.UserId = mud.UserId
WHERE qus.UserId = ? # querying user ID
如果你想支持用戶通過銷售Y(而不是藥物A通過銷售Y或藥物甲乙經銷售X由銷售X和藥劑B暢銷的藥物一)你可以使用這個數據模型:
User: id, etc.
Response: userId, salesTypeId, drugId
SalesType: id, etc.
Drug: id, etc.
然後你就可以自行加入響應查詢:
SELECT mu.userId
FROM response qu # querying user
INNER JOIN response mu # matching users
ON qu.salesTypeId = mu.salesTypeId
AND qu.drugId = mu.drugId
AND qu.userId != mu.userId
WHERE qu.userId = ? # ? = querying user ID
你是對的,我改變例子。更改型號不適用 – user1167761
@ user1167761 - 我認爲我的更新適用於您的現有型號。 – AjahnCharles
謝謝!只需添加不同的部分 - SELECT distinct(mus.userId) – user1167761
請改寫 你的問題。 – zarruq
SalesType-Drug是「User」表中的關鍵字? –
我不認爲你的數據模型支持你的例子...具體鮑勃是不可能的,因爲如果你加入用戶鮑勃到維生素A,維生素B,零售,州市場,你會得到所有4種組合,而不僅僅是你提出的4種。您需要一種將SalesType和Drug的組合連接到用戶的類型(編輯:實際上,您*不需要您當前擁有的兩個底部表格中的任何一個)。 – AjahnCharles