|
|
|
| Подскажите, как правильно выбрать данные из БД
есть три таблицы - brands, shops и связующая shops_brands
Мне надо вывести все бренды, которые соответствуют магазинам одежды
CREATE TABLE brands (
br_id int(5) NOT NULL auto_increment,
br_name text,
br_reiting int(3),
...
PRIMARY KEY (br_id)
) TYPE=MyISAM;
CREATE TABLE shops (
sh_id int(5) NOT NULL auto_increment,
sh_name text,
sh_kat text,
...
PRIMARY KEY (sh_id)
) TYPE=MyISAM;
CREATE TABLE shops_brands (
sh_id int(5) NOT NULL,
br_id int(5) NOT NULL,
PRIMARY KEY (sh_id, br_id)
) TYPE=MyISAM;
Вот запрос:
SELECT * FROM shops, shops_brands, brands
WHERE shops.sh_kat = 'odezhda'
AND shops.sh_id = shops_brands.sh_id
AND shops_brands.br_id = brands.br_id
ORDER BY br_reiting;
В результате:
Если бренд в одном магазине - все нормально выводит
Если бренд в нескольких магазинах - то в результате запроса дублируется строка с ЭТИМ БРЕНДОМ для каждого магазина.
Подскажите, как вывести бренд один раз, если он соответствует условиям? | |
|
|
|
|
|
|
|
для: Serg_l
(04.06.2008 в 10:37)
| | а ты как хотел? | |
|
|
|
|
|
|
|
для: Serg_l
(04.06.2008 в 10:37)
| | Необходимо сгруппировать результирующую таблицу по брендам
SELECT * FROM shops, shops_brands, brands
WHERE shops.sh_kat = 'odezhda'
AND shops.sh_id = shops_brands.sh_id
AND shops_brands.br_id = brands.br_id
GROUP BY brands.br_id
ORDER BY br_reiting;
|
| |
|
|
|
|
|
|
|
для: cheops
(04.06.2008 в 10:57)
| | Спасибо, все заработало как и хотел. | |
|
|
|
|
|
|
|
для: Serg_l
(04.06.2008 в 10:37)
| | Можно попробоватъ исполъзоватъ GROUP BY:
SELECT *
FROM shops, shops_brands, brands
WHERE shops.sh_id = shops_brands.sh_id
AND shops_brands.br_id = brands.br_id
GROUP BY br_name
ORDER BY br_reiting
LIMIT 0 , 30 | |
|
|
|