В общем то пытался сделать через UNION, JOIN или просто "FROM tbl1,tbl2"... Но все не то, у меня есть две таблицы "Запчасти" и "Машины" в каждой просто объявления пользователей о продаже/покупке... Мне нужно сделать запрос вида: SELECT * FROM tbl WHERE manuf = '1' ORDER BY dt_add LIMIT 0,10 Так чтобы работали ORDER BY и LIMIT, то есть так как будто бы таблица "tbl" одна, а не две... tbl1 и tbl2
Если как будто бы таблица одна - то тут UNION. Чтобы он работал - нужно, чтобы первый и второй запросы возвращали одинаковое количество столбцов. Например: [sql]SELECT `id`, `name`, `dt_add` FROM `table1` WHERE `manuf` = 1 UNION SELECT `id`, `name`, `dt_add` FROM `table2` WHERE `manuf` = 1 ORDER BY `dt_add` LIMIT 0, 10;[/sql]
Спасибо, но вот этого они не могут(( таблицы немного отличаются 70% совпадают и в остальном пошли отличия... Правда я вообще координально решил проблему и запросы все просто отпали =)))
Можно заставить UNION и на разных таблицах работать. Я же не говорю, что таблицы должны быть одинаковые. Я говорю, что подзапросы должны возвращать соответствующие столбцы. Ну вот, например, есть две таблицы: Код (Text): mysql> SELECT * FROM `t1`; +----+--------+------------+----------------+-------+ | id | name | dt_add | some_content | manuf | +----+--------+------------+----------------+-------+ | 1 | first | 2011-01-01 | first_content | 1 | | 2 | second | 2011-02-02 | second_content | 1 | +----+--------+------------+----------------+-------+ mysql> SELECT * FROM `t2`; +----+-----------+------------+----------------+---------+-------+ | id | title | add_date | contents | user_id | manuf | +----+-----------+------------+----------------+---------+-------+ | 1 | t2_first | 2011-03-03 | first_content | 15 | 1 | | 2 | t2_second | 2011-04-04 | second_content | 27 | 1 | | 3 | t2_third | 2011-05-05 | third_content | 8 | 1 | +----+-----------+------------+----------------+---------+-------+ Тогда: [sql]SELECT `id`, `name`, `dt_add`, NULL, 't1' FROM `t1` WHERE `manuf` = 1 UNION SELECT `id`, `title`, `add_date`, `user_id`, 't2' FROM `t2` WHERE `manuf` = 1 ORDER BY `dt_add` LIMIT 0, 10;[/sql] Код (Text): mysql> SELECT `id`, `name`, `dt_add`, NULL, 't1' FROM `t1` WHERE `manuf` = 1 UNION SELECT `id`, `title`, `add_date`, `user_id`, 't2' FROM `t2` WHERE `manuf` = 1 ORDER BY `dt_add` LIMIT 0, 10; +----+-----------+------------+------+----+ | id | name | dt_add | NULL | t1 | +----+-----------+------------+------+----+ | 1 | first | 2011-01-01 | NULL | t1 | | 3 | t2_third | 2011-02-02 | 8 | t2 | | 1 | t2_first | 2011-03-03 | 15 | t2 | | 2 | t2_second | 2011-04-04 | 27 | t2 | | 2 | second | 2011-05-05 | NULL | t1 | +----+-----------+------------+------+----+ 5 rows in set