![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с SQL запросом если не лень
DillerXX © (2008-07-11 19:43:00)СУБД mySQL. Пусть есть таблицы t1 и t2. Каждая имеет вид
DATETIME `date`,
TEXT `name`
Мне нужно выбрать все записи обоих таблиц, добавив 3ий столбец, где стояло бы имя таблицы, а затем отсортировать полученную таблицу по возрастанию date. Тоесть нужно объединить результат запросов SELECT `name`, `date`, 'tbl1' FROM `tbl1` (и для второй аналогично) и отсортировать по date. Ни одной идеи как это сделать (ведь SELECT (SELECT ...), по крайней мере в mySQL, не может принимать результат с более чем 1ой строкой). Может у UNION есть какие-то параметры, с помощью которых можно управлять резуьтатом обоих запросов, но ничего не нашёл.
ЗЫ. Пожалуйста, не оставляйте своё мнение по поводу mySQL, я всегда догадывался о нём.
Игорь Шевченко (2008-07-11 22:45:00) [21]отсортированный набор гарантировано возвращает только SELECT .... c ORDER BY. Все остальные утверждения есть ересь, туфта и лажа.
Игорь Шевченко (2008-07-11 22:32:00) [22]Johnmen © (11.07.08 21:26) [9]
sniknik © (11.07.08 21:14) [8]
Аналогично, DISTINCT тоже возвратит отсортированный набор ?
Ну как программист программисту ?
Johnmen (2008-07-11 21:26:00) [23]
> Игорь Шевченко © (11.07.08 21:11) [6]
Типа в SQL-9x не прописано. В более поздних - не знаю.
Но упоминается в документации к конкретным sql серверам.
Всё. Больше ничего говорить не буду. Ибо что такое занудство, хорошо знаю...:)
sniknik (2008-07-11 21:14:00) [24]> это только к MySQL относится или вааще
это вааще везде где есть UNION. имхо (на случай какогонибудь crazy sql сервера).
sniknik (2008-07-11 21:12:00) [25]> оно где-то, умолчание, прописано ?
в явном виде не видел... "дошел" подобного вывода по логике, UNION же без ALL убирает дубликаты записей (и вот это уже пишут явно), а как убирать дубли в несортированном списке? как программист программисту... %) это же сколько времени оно занимать будет, на переборах? а после, раз отсортированное, как восстановит оригинальный порядок? (без введений дополнительных столбцов в выборку)
т.что то, что оно так работает с сортировкой, это точно, но вот гарантий закрепленных в доках вроде нет, не видел (mssql/access).
Игорь Шевченко (2008-07-11 21:11:00) [26]Johnmen © (11.07.08 21:07) [5]
> Конечно. В документации.
Ты меня несколько не так понял - я спрашивал, это только к MySQL относится или вааще ? (ну типа в SQL-9x прописано...)
Johnmen (2008-07-11 21:07:00) [27]
> Игорь Шевченко © (11.07.08 20:15) [4]
Конечно. В документации.
И не надо мне говорить, что ты не умеешь пользоваться поисковыми серверами...:)
Т.е. не надо думать, что я буду что-то искать. Мне это не интересно...
ЗЫ
И по поводу (в случае с юнион)
> order by datetime
стОит, наверное, ознакомиться с документацией.
Игорь Шевченко (2008-07-11 20:15:00) [28]Johnmen © (11.07.08 19:51) [3]
> По умолчанию при юнион без ALL - order by 1, 2, 3, ...
я-то по серости order by после union пишу. оно где-то, умолчание, прописано ?
Johnmen (2008-07-11 19:51:00) [29]
> Игорь Шевченко © (11.07.08 19:50) [2]
По умолчанию при юнион без ALL - order by 1, 2, 3, ...
Игорь Шевченко (2008-07-11 19:50:00) [30]Johnmen © (11.07.08 19:48) [1]
+ order by datetime
Johnmen (2008-07-11 19:48:00) [31]
SELECT DATETIME, 't1' AS TableName, TEXT FROM t1
UNION
SELECT DATETIME, 't2', TEXT FROM t2