Дано: 2 таблицы 1) orders (id INT auto_increment, date INT (10), status INT(2)) 2) orders_positions(id INT auto_increment, order_id INT, name VARCHAR(128), price) Допустим есть 3 записи в таблице orders (3 заказа) в каждом заказе по 5 наименований продукции т.е. в таблице orders_positions 15 рядов Хочу вывести все наименования на одной странице... роуспаном объединяя позиции в одном заказе.... Делаю запрос SELECT a.*, b.* FROM orders AS a LEFT JOIN orders_positions AS b ON (a.id=b.order_id) получаю "балясину" из 15 строк...... Теперь хочу сделать чтоб если в таблице orders (!!!) больше 10 рядов - выводить по 10 заказов (!!! НЕ НАИМЕНОВАНИЙ) на страницу.... т.е. строк может быть 10, 15, 98 - неважно...... надо сделать лимит по первой таблице, а не рез-тату получившемосю после склеивания...... Ну и соответственно хочу сделать это 1 запросом........ Ну можно субкваери ещё в него..... суть в том, чтоб у меня в коде получилась одна строка $sql="что-то".....
ну и выдаст он тебе все тоже самое, только отсортированное..... есть 15 рядов в таблице orders и 998 рядов в таблице orders_positions... К 1-м десяти рядам относится допустим 567 полей...... так вот LIMIT тогда должен быть равен 567 или 10 но тогда надо лимитировать по первой таблице..... если бы все так просто было... =)
можно конечно сделать 2-мя запросами..... сначала выбрать 10 ИДов и вписать их во 2-й запрос..... но вот интереснее в 1 запрос...... кстать MySQL 5-й версии....
напишите 2 запроса, мб тогда будет проще вьехать кстать 4-й хренова с подзапросами работал как с этим в 5-м? SELECT ... WHERE id IN (SELECT ...)
LIMIT в подзапросах IN/ALL/ANY/SOME не понимает..... но впринципе в сравнении с 4-м получше будит...... там самое вкусное - stored procedures...... ну триггеры ещё в 4.1 ввели.... Сделал в 2 запроса.... потом напишу хранимую процедуру чтоб можно было просто ее вызввать делать.....