Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak wylistować produkty ?
Forum PHP.pl > Forum > Bazy danych > MySQL
tomroy
Hej

Mam następujące tabele:

Products
id name
1 tv
2 dvd
3 cd

Features
id name
1 battery
2 cables
3 manual

Product_features
product_id feature_id
1 1
1 2
2 1
3 2


Jaki bedzie sql który wylistuje produkty które mają baterie i kable.
Wynikiem powinien być jeden rekord tv.

Tomek
wijet
Troche to wolne bedzie... (i tak na około) ale chyba mozna zastapic jedno z podzapytan joinem.

  1. SELECT * FROM products WHERE id IN(SELECT p_id FROM p_f WHERE f_id IN (SELECT id FROM features WHERE name = 'cables' OR name = 'battery') GROUP BY p_id HAVING COUNT(p_id) = 2);


tabela Product_features to umnie p_f,atrybuty to p_id,f_id

EDIT:
wersja szybsza
  1. SELECT p.id,p.name FROM features AS f,products AS p,p_f WHERE f.id = p_f.f_id AND p.id = p_f.p_id AND (f.name = 'cables' OR f.name='battery') GROUP BY p.id HAVING COUNT(p.id) = 2


nie działają entery w kodzie SQL angrysmiley.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.