Помогите, пожалуйста, с решением вот какой задачи. Требуется извлечь из базы данных все товары из корзины пользователя. Изначально хотел использовать такой варинант:
$q = $db->arr_query( "SELECT * FROM `products` WHERE `id` = (Но как оказалось — такой вариант не работает, как подзапрос возращает более одного результата и запрос фейлится. Запихивать запросы в цикл, как мне здесь говорили, нельзя, из-за слишком большой нагрузки.
SELECT `product_id` FROM `carts` WHERE `cart_id` = '$cId')"
);
Подскажите, может есть на такие случаи какое-то универсальное решение? Мне знаний SQL, помоему, не хватает.
Спустя 41 минута, 6 секунд (18.09.2011 - 14:48) killer8080 написал(а):
попробуй так
SELECT *или так
FROM `products`
WHERE `id` IN (
SELECT `product_id` FROM `carts` WHERE `cart_id` = '$cId'
)
SELECT `p`.*
FROM `products` AS `p`
LEFT JOIN `carts` AS `c` ON `p`.`id`=`c`.`product_id`
WHERE `c`.`cart_id` = '$cId'
Спустя 9 минут, 10 секунд (18.09.2011 - 14:57) AlmazDelDiablo написал(а):
Цитата (killer8080 @ 18.09.2011 - 16:48) |
SELECT * |
Сделал так — заработало :). Почитал об операторе IN заодно, немного нового открыл для себя.
Спасибо большое!
Спустя 4 часа, 58 минут, 53 секунды (18.09.2011 - 19:56) inpost написал(а):
AlmazDelDiablo
Запрос №1: SELECT `product_id` FROM `carts` WHERE `cart_id` = '$cId'
Получить все ID в массив.
Запрос№2: основной, где WHERE id IN ().
Вот только вчера одному человеку мозги с этим парил
http://phpforum.ru/index.php?showtopic=50799&st=60&hl=
Запрос №1: SELECT `product_id` FROM `carts` WHERE `cart_id` = '$cId'
Получить все ID в массив.
Запрос№2: основной, где WHERE id IN ().
Вот только вчера одному человеку мозги с этим парил

Спустя 1 час, 14 минут, 10 секунд (18.09.2011 - 21:10) killer8080 написал(а):
inpost
а смысл, когда можно одним запросом сделать тоже самое?
а смысл, когда можно одним запросом сделать тоже самое?

Спустя 13 минут, 31 секунда (18.09.2011 - 21:24) inpost написал(а):
killer8080
Подзапросы зло.
Подзапросы зло.
Спустя 6 минут, 35 секунд (18.09.2011 - 21:30) killer8080 написал(а):
inpost
делать 2 запроса по сути то же самое, что и подзапрос, только в этой цепочке появляется ещё одно звено - php. Смысл циклом тащить в php данные из мускула, если дальше они в скрипте не нужны? Сомневаюсь что это может улучшить быстродействие.
делать 2 запроса по сути то же самое, что и подзапрос, только в этой цепочке появляется ещё одно звено - php. Смысл циклом тащить в php данные из мускула, если дальше они в скрипте не нужны? Сомневаюсь что это может улучшить быстродействие.
Спустя 37 минут, 6 секунд (18.09.2011 - 22:07) Evilsoul написал(а):
killer8080
Поддерживаю.
Я много слышу о том что "подзапосы зло" но ни разу на практике в таких словах не нашел истины.
Что такое "подзапрос" и как это работает?! Многие знают одну фразу - "это плохо". Почему?!
Работа проста, сначала выполняется подзапрос, затем запрос с данными из подзапроса.
Вопрос, в чем же зло таится?
Поддерживаю.
Я много слышу о том что "подзапосы зло" но ни разу на практике в таких словах не нашел истины.
Что такое "подзапрос" и как это работает?! Многие знают одну фразу - "это плохо". Почему?!
Работа проста, сначала выполняется подзапрос, затем запрос с данными из подзапроса.
Вопрос, в чем же зло таится?
_____________
Блог | VK | GitHub | Twitch