Выбор столбца из таблицы в MySQL дважды - PullRequest
1 голос
/ 26 января 2012

У меня есть таблица , в которой хранится идентификатор пользователя и идентификаторы его происхождения и назначения.На таблице b у меня есть идентификатор местоположения и конкретное название места.Я пытаюсь соединить таблицы, но столбец name из таблицы b придется использовать дважды, так как я пытаюсь получить 2 адреса.Я пытаюсь прочитать о MySQL, но просто продолжаю делать это неправильно.Любая помощь будет оценена.

      table a
------------------------
|  uid |   to | from   |
------------------------
|   1  |   1  |   2    |
------------------------

    table b
---------------
| lid  | name | 
---------------
|   1  | one  |
---------------
|   2  | two  |
---------------

       /what I'm trying to achieve/
------------------------------------------
|a.uid | a.to | b.name | a.from | b.name |
------------------------------------------
|   1  |   1  |  one   |   2    | two    |
------------------------------------------

Ответы [ 2 ]

1 голос
/ 26 января 2012

Вам придется присоединиться к таблице b дважды, и каждый раз, используя другое имя таблицы (b1, b2), используя as

select *
from a join b as b1 on a.to = b1.lid 
       join b as b2 on a.from = b2.lid 

так что результат будет

--------------------------------------------
|a.uid | a.to | b1.name | a.from | b2.name |
--------------------------------------------
|   1  |   1  |  one    |   2    | two     |
--------------------------------------------

но, вероятно, вы хотите предотвратить столкновение имен - например, если вы вызовите его из PHP - затем переименуйте столбцы:

select a.*, b1.name as toName, b2.name as fromName
... (rest of the query as above)
0 голосов
/ 26 января 2012

Если это ограничено просто быть дважды, просто присоединитесь к таблице b дважды.

Но похоже, что между a.from и a.to может быть любое число чисел, и в этом случае я бы предложилВы делаете это в двух или более запросах.

Один, чтобы получить строку из a, и один, чтобы получить все строки в b, которые находятся между a.from и a.to.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...