MySQL подзапрос, используя те же поля идентификатора дважды из одной таблицы для описания - PullRequest
0 голосов
/ 31 марта 2011

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

Я пытаюсь получить имя местоположения MoveTo и MoveFrom, используя приведенный выше запрос, который выдает «# 1242 - Подзапрос возвращает более 1 строки» в PHPMyAdmin.

Описание Движения предметов хранятся в таблице под названием «перемещение». Элементы можно перемещать из одного местоположения в другое, сохраняя идентификаторы местоположения (имена местоположений хранятся в таблице «местоположение») и имена предметов, хранящиеся в таблице «элемент». MoveTo и MoveFrom будут хранить идентификаторы из таблицы местоположений.

Может кто-нибудь помочь мне с этим запросом? Заранее спасибо

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Я думаю, что вы можете использовать соединения вместо подзапросов.Что-то вроде:

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
0 голосов
/ 24 июня 2013
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 )
...