Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Warunki na podstawie drugiej tabeli.
Forum PHP.pl > Forum > Bazy danych > MySQL
paxton
Witam,


Mam dwie tabele:

products - id, name
products_quote_info - id, product_id, key, value

Produkty maja po kilka rekordow w tabeli products_quote_info, potrzebuje wyciagnac teraz te produkty ktore dla przykladu:
Cytat
key = "product" value = "post" ORAZ key = "place" value = "indoor"


Jesli jakis z tych warunkow sie nie zgadza, ma nie zwracac tego produktu. Ogolnie chodzi o to, ze w tej drugiej tabeli jest cos na wzor specyfikacji, potrzebuje wyciagnac produkty ktorych specyfikacja jest dokladnie taka jaka potrzebuje.

Prosze o pomoc.

Dziekuje
wookieb
O INNER JOIN słyszał? snitch.gif
paxton
Juz próbowałem, sam INNER JOIN mi tu chyba nic nie pomoże.

Probowalem cos takiego:
  1. SELECT * FROM products INNER JOIN products_quote_info AS a ON a.product_id = products.id WHERE (a.KEY = "product" AND a.value = "post") AND (a.KEY = "place" AND a.value = "indoor")


Ale oczywiście to nie działa, ale może zrozumiesz o co mi chodzi po przeczytaniu SQL.
luckyps
Pisane z glowy, wiec pewnie sa byki wink.gif ale moze to Cie jakos naprowadzi na rowiazanie...

  1. SELECT products.id, count(*) FROM products INNER JOIN products_quote_info AS a ON a.product_id = products.id
  2. WHERE (a.KEY = "product" AND a.value = "post") OR (a.KEY = "place" AND a.value = "indoor")
  3. GROUP BY products.id
  4. HAVING count(*) > 1
paxton
Działa! smile.gif Dzieki za pomoc.

Pełne rozwiązanie:

  1. SELECT products.name, count(*) FROM products INNER JOIN products_quote_info AS a ON a.product_id = products.id
  2. WHERE (a.KEY = "product" AND a.value = "post") OR (a.KEY = "place" AND a.value = "indoor")
  3. GROUP BY products.id
  4. HAVING count(*) = 2


Szczerze powiedziawszy myślałem nad tym rozwiązaniem, ale myślałem ze samo SQL sobie poradzi bez podawania jej ilości argumentów.
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.