選擇行我有3個表:怎麼就不能與鏈接表
房屋
--------------------------------------------------
| ID | STORE |
--------------------------------------------------
| - 1 | Store1 |
--------------------------------------------------
| - 2 | Store2 |
--------------------------------------------------
| - 3 | Store3 |
--------------------------------------------------
| - 4 | Store4 |
--------------------------------------------------
用戶
--------------------------------------------------
| ID | USER |
--------------------------------------------------
| - 1 | User1 |
--------------------------------------------------
| - 2 | User2 |
--------------------------------------------------
| - 3 | User3 |
--------------------------------------------------
| - 4 | User4 |
--------------------------------------------------
User_stores
--------------------------------------------------
| USER | STORE |
--------------------------------------------------
| --- 1 -- | ----1----- |
--------------------------------------------------
| --- 1 -- | ----2----- |
--------------------------------------------------
| --- 2 -- | ----1----- |
--------------------------------------------------
| --- 2 -- | ----2----- |
--------------------------------------------------
| --- 3 -- | ----3----- |
--------------------------------------------------
我用這爲我的選擇。
SELECT S.id, S.store
FROM stores S
JOIN user_stores L
ON S.id = L.store
JOIN users U
ON U.id = L.user
WHERE L.user <> ?
我的問題:
我想選擇每個鏈接到任何人,除當前用戶(也就是用戶ID)店。該查詢確實選擇了未鏈接到當前用戶的商店,但仍存在問題。
我的查詢仍然會選擇當前用戶擁有的商店,只有當另一個用戶也有該商店鏈接到它(因爲這是一個鏈接到其他用戶的行)。
是否有可能從select語句中排除這些條目,只有用戶標識可用?
解決
SELECT S.id, S.store
FROM stores S
JOIN user_stores L
ON S.id = L.store
JOIN users U
ON U.id = L.user
and L.user <> ?
and S.id not in (
select L.store from user_stores L
where L.user = ?
);
我不知道有可能把一個select語句放在一個not in()之類的東西里。你每天學習新的東西!該查詢不適用於我不幸的。它產生相同的結果加上用戶已有的商店。 –
已更新。你可以再試一次嗎? – GurV
現在有效。我在結尾選擇語句中添加了一些別名。然後它工作。 –