2012-01-26 5 views
1

У меня есть таблица a, которая хранит идентификатор пользователя и идентификаторы его происхождения и назначения. На Таблица b У меня есть идентификатор местоположения и определенное имя места. То, что я пытаюсь сделать, это присоединиться к таблицам, но имя имя столбец от таблица b придется использовать дважды, так как я пытаюсь получить 2 адреса. Я пытаюсь читать MySQL, но продолжаю делать это неправильно. Любая помощь будет оценена по достоинству.Выбор столбца из таблицы в 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 | 
------------------------------------------ 

ответ

1

Вы должны присоединиться в таблице 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

Спасибо, +1 за переименование столбцов. –

0

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

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

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

Смежные вопросы