Доброго времени суток. Имеется 2 таблицы, в них хранятся некие записи с датой добавления (unix timestamp): table1: table2: Нужно выбрать `table1`.`achievement`, `table1`.`date`, `table2`.`criteria`, `table2`.`date` и выполнить сортировку по обоим полям `date`. Т.е., результат должен быть примерно таким: Если данные были взяты из таблицы 1, поле criteria имеет значение 0, если же взяты из 2й, то поле achievement имеет нулевое значение. Пробовал с left join, union, нужного результата не получил. Приму любую помощь. Заранее спасибо.
Запрос: Код (Text): ( SELECT `achievement` , `date` AS `achDate` FROM `character_achievement` WHERE `guid` =7 ORDER BY `date` DESC ) UNION ( SELECT `criteria` , `date` AS `crDate` FROM `character_achievement_progress` WHERE `guid` =7 ORDER BY `date` DESC ) Результат: Поле criteria в результат не попадает. Чувствую, что что-то не так делаю
Если achievement и criteria одного типа, то criteria попадает в выборку, но находится в том же столбце что и achievement. Сделайте 3 столбца выборки. И Вам упорядочить по дате надо все или каждую таблицу отдельно?
Догадывался насчет этого, но есть проблема - критерии и ачивменты должны обрабатываться впоследствии по-разному, а распознать что есть что будет очень сложно. Не совсем понял) Упорядочить конечный результат. PS: вот с таким запросом: Код (Text): SELECT `character_achievement`.`achievement` , `character_achievement`.`date` , `character_achievement_progress`.`criteria` , `character_achievement_progress`.`date` FROM `character_achievement` AS `character_achievement` LEFT JOIN `character_achievement_progress` AS `character_achievement_progress` ON `character_achievement_progress`.`guid` = `character_achievement`.`guid` WHERE `character_achievement`.`guid` =7 ORDER BY `character_achievement`.`date` , `character_achievement_progress`.`date` LIMIT 50 Выбирается всё в разные столбцы, но всё равно криво:
1)Что есть union? Грубо говоря: "Прилепи мне вот к этой таблице вот эту таблицу снизу. Столбцы обзови по первой таблице". Итого: [sql]SELECT `achievement` , 0 as criteria `date` FROM `character_achievement` WHERE `guid` =7 union[/sql] дальше выборка из второй таблицы. 2)Посмотрите как используется order by при union.