SQL: после запроса к объединенной таблице сначала поместите строки с данными в обе таблицы - PullRequest
1 голос
/ 05 июня 2011

Имея 1001 возможность использовать MySQL, я сформулировал для себя требование, которое хочу выяснить, но не знаю как.Я также, конечно, запустил Google Search и проверил переполнение стека и документы MySQL, но я не получил ответ, который искал.

Ситуация: у меня 2 таблицы.Один вызван и содержит клиентов , а другой содержит customer_progress .Для вашего изображения таблица customer_progress может опционально содержать данные о прогрессе / статусе для клиента.

Моя цель состояла в том, чтобы объединить данные из двух таблиц,и поместите клиентов, у которых есть данные о прогрессе, вверху, после которых идут клиенты, у которых нет данных о прогрессе;запрос «все в 1».

Итак, я начал писать запрос, наподобие следующего:

SELECT 
 * 
FROM 
 customers AS c 
LEFT JOIN 
 customer_progress AS p 
ON 
 p.customer_id = c.id AND p.year = 2011 // Joining them and selecting the progress for a certain year.
WHERE 
 c.active = 1;

Как я могу сначала указать клиентов, у которых есть отчет о ходе работы, а затем всеклиенты, у которых нет записи о прогрессе?

Я не знаю, правильно ли я поступаю с запросом или мне нужно подходить к этому с совершенно другой точки зрения.Использовать ORDER BY не имеет смысла.

Ответы [ 2 ]

3 голосов
/ 05 июня 2011

Вам нужно выбрать поле для прогресса клиента, которое вы можете заказать, чтобы добавить что-то вроде

order by custer_progress_field desc;

в конце вашего оператора select.

Например:

SELECT 
 c.filed1, p.field1 
FROM 
 customers AS c 
LEFT JOIN 
 customer_progress AS p 
ON 
 p.customer_id = c.id AND p.year = 2011 // Joining them and selecting the progress for a certain year.
WHERE 
 c.active = 1;
Order by p.field1 desc;
2 голосов
/ 05 июня 2011

Вам нужно добавить что-то вроде

ORDER BY IF(p.customer_id IS NULL,1,0), [other fields]
// or you can do just if sorting by customer_id is acceptable 
ORDER BY p.customer_id DESC

Подробнее о том, как столбцы со значениями NULL обрабатываются ORDER BY в http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html

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