0

SELECT move.idItem, item.description, ( SELECT location.location_name as movedFrom FROM move, location WHERE move.idlocationFrom = location.idlocation ) AS movedFrom, ( SELECT location.location_name as movedTo FROM move, location WHERE move.idlocationTo = location.idlocation ) AS movedTo FROM move , item WHERE move.idItem = item.idItem

上記のクエリを使用して、移動した場所と移動した場所の名前を取得しようとしていますが、PHPMyAdmin で「#1242 - サブクエリが複数の行を返します」というエラーが発生します。

説明 アイテムの動きは「move」というテーブルに保存されます。アイテムは、ロケーション ID ('location' テーブルに保存されたロケーション名) と 'item' テーブルに保存されたアイテム名を保存して、あるロケーションから別のロケーションに移動できます。movedToとmovedFromは、ロケーションテーブルからのIDを保存します。

誰かがこのクエリで私を助けてくれますか? 前もって感謝します

4

2 に答える 2

1

サブクエリの代わりに結合を使用したいと思うかもしれません。何かのようなもの:

SELECT move.idItem, 
       item.description, 
       location1.location_name movedFrom, 
       location2.location_name as movedTo
FROM move 
INNER JOIN location location1 ON move.idlocationFrom = locatio1n.idlocation
INNER JOIN location location2 ON move.idlocationTo = location2.idlocation
INNER JOIN item ON move.idItem = item.idItem
于 2011-03-31T02:11:03.130 に答える
0
Table 1 -  cpe Table

|id | name
|----------
| 1 | cat
| 2 | dog
| 3 | mouse
| 4 | snake
-----------

Table 2 - AutoSelect

|id  | name   |  cpe1_id |  cpe2_id  | cpe3_id |
|-----------------------------------------------
| 1  | user1  |  1       |  3        | 4       |
| 2  | user2  |  3       |  1        | 2       |
| 3  | user3  |  3       |  3        | 2       |
| 4  | user4  |  4       |  2        | 1       |
------------------------------------------------

I would like to see an output of

user1 | cat   | mouse  |  snake  |
user2 | mouse | snake  |  dog    | 
..etc

 SELECT a.name, cpe1.name, cpe2.name, cpe3.name FROM AutoSelect as a
 LEFT JOIN cpe as cpe1 ON ( cpe1.id = a.cpe1_id ) 
 LEFT JOIN cpe as cpe2 ON ( cpe2.id = a.cpe2_id ) 
 LEFT JOIN cpe as cpe3 ON ( cpe3.id = a.cpe3_id )
于 2013-06-24T05:52:38.053 に答える