0

People、Items、Location の 3 つのテーブルがあります。人は1つのアイテムしか持てません。Locations は、2 つのテーブルのいずれとも関係がありません。3つすべてに参加を記録したい.これまでに2人+アイテムを実行しましたが、3番目にMySQLエラーが発生し続けます。ロケのJOIN ONはありません。何か助けはありますか?

SELECT * FROM ITEMS i 
RIGHT JOIN PEOPLE p 
ON (p.ITEM_ID =i.ID) where
 p.ID=3 

RIGHT JOIN 

SELECT * FROM LOCATIONS lo where lo.ID=7
4

3 に答える 3

0

ID7 の位置をすべての行に表示する必要があると仮定しています...

SELECT * 
    ,(SELECT loc.name FROM Location loc WHERE loc.ID = 7) AS Location
FROM ITEMS i 
RIGHT JOIN PEOPLE p 
ON (p.ITEM_ID =i.ID)
WHERE p.ID=3 

また

SELECT * 
FROM ITEMS i 
RIGHT JOIN PEOPLE p 
ON (p.ITEM_ID =i.ID)
CROSS JOIN (SELECT * FROM LOCATIONS lo where lo.ID=7) l 
WHERE p.ID=3 

また

[several other ways to go about it]
于 2013-05-08T21:47:45.983 に答える
0

次のようなことを試してください:

SELECT peo.id, it.id, loc.id
FROM People as peo
INNER JOIN Items as it on it.id = peo.id
INNER JOIN Locations as loc on loc.id = peo.id
WHERE peo.ID=3 

編集:これを入力しているときに質問が編集されたため、以前のように例が一致しません。必要に応じて ITEM_ID と ID を使用します。

推奨されていませんが、使用することもできます

SELECT *
FROM People as peo
INNER JOIN Items as it on it.id = peo.id
INNER JOIN Locations as loc on loc.id = peo.id
WHERE peo.ID=3 
于 2013-05-08T21:40:26.980 に答える