("SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer,
(SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$customer_group_id . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount,
(SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special,
(SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '" . (int)$customer_group_id . "') AS reward, (SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status,
(SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class,
(SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class,
(SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating,
(SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews
FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'")
Спустя 9 минут, 19 секунд (29.08.2012 - 19:55) Игорь_Vasinsky написал(а):
вложенные запросы. т.е. можно не тока выборку сделать из таблицы - но и из другой выборки. а чтоб не городить много букв - каждой выборке назначается алияс (псевдоним) - через AS
Спустя 29 минут, 56 секунд (29.08.2012 - 20:25) Nuzhser написал(а):
Ну вот есть первый блок как AS discount
а после FROM то есть как бы должно оно быть что мы из него выбираем а его нету или я неправильно рассуждаю
а после FROM то есть как бы должно оно быть что мы из него выбираем а его нету или я неправильно рассуждаю
Спустя 18 минут, 51 секунда (29.08.2012 - 20:44) Игорь_Vasinsky написал(а):
правильно)
Спустя 50 секунд (29.08.2012 - 20:45) Игорь_Vasinsky написал(а):
стой.
когда запрос идёт через запятую - это он вставляется как ячейка в перечисление ячеек
когда запрос идёт через запятую - это он вставляется как ячейка в перечисление ячеек
Спустя 13 минут, 4 секунды (29.08.2012 - 20:58) Nuzhser написал(а):
То есть ему и не надо указывать откуда просто как ячейка и само собой понятно откуда она взялась, ага типа она будет в результате выборки называться discount кажеться я понял
Другими словами внизу запроса идет обьединение таблиц но эти блоки SELECT из обьединение ничего брать не будут они выбирают из своих таблиц и все
Другими словами внизу запроса идет обьединение таблиц но эти блоки SELECT из обьединение ничего брать не будут они выбирают из своих таблиц и все
Спустя 2 минуты, 42 секунды (29.08.2012 - 21:01) Игорь_Vasinsky написал(а):
да.
но я сам не очень такие запросы практикую.
вообщем ИМХО
но я сам не очень такие запросы практикую.
вообщем ИМХО
Спустя 1 минута, 28 секунд (29.08.2012 - 21:02) Nuzhser написал(а):
Ну да но понять то надо людей ведь к тому же оно и работает)
Спустя 2 минуты, 17 секунд (29.08.2012 - 21:04) Игорь_Vasinsky написал(а):
ну вот чёт ни кто из sqlщиков не заглядывает
Спустя 51 секунда (29.08.2012 - 21:05) Nuzhser написал(а):
Кароче спасибо иду смотреть футбол
Спустя 1 минута, 46 секунд (29.08.2012 - 21:07) Игорь_Vasinsky написал(а):
Спустя 5 минут (29.08.2012 - 21:12) Invis1ble написал(а):
Все правильно. Выполняются подзапросы и в результирующей выборке эти значения фигурируют под именами алиасов (псевдонимов).
_____________
Лэт ит би