2014-10-03 3 views
0

У меня есть две таблицы (SQL скрипку доступные here):Сортировать по одной таблицы в MySQL

Люди

ID   Company_ID  Name 
1   1    Jones 
2   2    Smith 
3   3    Kim 
4   2    Takahashi 
5   3    Patel 
6   1    Muler 

Компании

ID   Name 
1   QQQ 
2   AAA 
3   MMM 

Я хотел бы заказать выбор людей за Название компании, в которой они работают.

SELECT * FROM People WHERE (Some where clause) ЗАКАЗАТЬ ПОМОЩЬ!

+0

Вы не хотите, чтобы * название * компании на выходе? Вы только хотите заказать по названию? –

+0

Это правильно. Только порядок вывода. – JVMX

ответ

2

Вы должны join обе таблицы:

SELECT p.* 
FROM  People p 
JOIN  Companies c ON c.ID = p.CompaniyID 
WHERE --(Some where clause) 
ORDER BY c.Name ASC 
1
SELECT * FROM People INNER JOIN Companies ON Company_ID = Companies.ID ORDER BY Companies.Name 
1

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

Так это то, что это будет выглядеть так:

SELECT * 
FROM TABLE_ONE, 
     TABLE_TWO 
WHERE 
     FOREIGN_KEY_IN_TABLE_ONE = PRIMARY_KEY_IN_TABLE_TWO 
ORDER BY 
     COLUMN_THAT_YOU_WANT_TO_SORT_ON 

Другой синтаксис с пунктами присоединиться бы как этот

SELECT * 
FROM TABLE_ONE INNER JOIN TABLE_TWO ON FOREIGN_KEY_TABLE_ONE = PRIMARY_KEY_TABLE_TWO 
ORDER BY 
     COLUMN_THAT_YOU_WANT_TO_SORT_ON 

Try, чтобы прочитать о методах присоединиться. INNER JOIN - это не единственная возможность.