|
|
|
| поиск идет по уникал. значинию. по ID/
т.е. нужно найти только одну запись.
есть 2 одинаковые таблицы.
1) основная
2) архив.
сейчас у меня стоит так
делаем 2 запроса.
1) поиск из 1 таблицы,
если ответ пустой, то делаем
2) второй запрос 2ой таблице.
если пустой, то такой темы нет.
можно такие запросы сделать вместе???
DISTINCT ??? LIMIT???
т.е. как будто мы по одной таблице ищем... | |
|
|
|
|
|
|
|
для: а-я
(11.02.2008 в 20:19)
| | Если ID уникален для обоих таблиц, можно воспользоваться оператором UNION
SELECT * FROM tbl WHERE ID = 345
UNION
SELECT * FROM arch WHERE ID = 345
|
| |
|
|
|
|
|
|
|
для: cheops
(12.02.2008 в 01:13)
| | т.е. если в 1 таблице значение будет найдено,
то во второй таблице поиск уже не будет происходить? | |
|
|
|
|
|
|
|
для: а-я
(12.02.2008 в 01:50)
| | Во второй тоже будет происходить поиск. | |
|
|
|
|
|
|
|
для: Unkind
(12.02.2008 в 02:52)
| | а так:
SELECT DISTINCT * FROM tbl WHERE ID = 345 LIMIT 1
UNION
SELECT DISTINCT * FROM tbl WHERE ID = 345 LIMIT 1
|
| |
|
|
|
|
|
|
|
для: а-я
(12.02.2008 в 03:07)
| | А так два раза будет производиться поиск в одной и той же таблице tbl (правда оптимизатор второй запрос скорее всего отклонит). В конструкции UNION оба запроса выполняются, если таблицы большие, то два запроса с проверкой условия у вас будут выполняться быстрее.
PS Можно создать третью таблицу, которая будет хранить число или ID начиная с которого идут архивные записи (или хранить это значение в каком-то другом месте) - тогда можно будет всегда обходиться одним запросом. | |
|
|
|
|
|
|
|
для: cheops
(12.02.2008 в 11:56)
| | хорошо.. спасибо. попробую что-нибудь придумать.. | |
|
|
|