Выберите из таблицы MySQL при заказе по идентификаторам из другой таблицы - PullRequest
1 голос
/ 04 августа 2011

Это может быть что-то очень простое. Если это так, я прошу прощения. Я все еще изучаю MySQL.

Скажем, у меня есть две таблицы:

Table1:
`id` int autoincrement primary key
`Name` tinytext
`Phone` tinytext
`Date` etc.

и

Table2:
`id` int autoincrement primary key
`itmID` int

Каждая строка в таблице 2 указывает порядок, в котором элементы должны выбираться из таблицы 1. Поле itmID в таблице 2 связано с полем id в таблице 1.

Итак, прямо сейчас, чтобы выбрать элементы из Таблицы1, я делаю это:

SELECT * FROM `Table1`;

Но как вы упорядочите их в соответствии с таблицей 2, что-то вроде этого?

SELECT * FROM `Table1` ORDER BY <itmID's in Table2> ASC;

Ответы [ 4 ]

4 голосов
/ 04 августа 2011

Если все идентификаторы Table1 имеют запись в Table2, используйте INNER JOIN, например, так.

SELECT * FROM Table1 t1
INNER JOIN Table2 t2 ON t1.id = t2.itmID
ORDER BY t2.itmID

Если не все из них имеют запись, используйте LEFT JOIN вот так:

SELECT * FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.id = t2.itmID
ORDER BY t2.itmID
4 голосов
/ 04 августа 2011

Выберите из первой таблицы, присоедините ее ко второй и упорядочите по второй.Что-то вроде

SELECT * 
FROM   table1
LEFT JOIN table 2 on table.id = table2.id
ORDER by table2.itmID
3 голосов
/ 04 августа 2011

Райан почти прав

SELECT *
FROM table1
INNER JOIN table2 on table1.id = table2.itmID
ORDER BY table2.id
2 голосов
/ 04 августа 2011

http://dev.mysql.com/doc/refman/5.5/en/join.html

SELECT * FROM `Table1`
INNER JOIN `Table2` USING (`id`)
ORDER BY `Table2`.`itmID` ASC
...