Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] Zapytanie SQL z GROUP BY, problem z zapytaniem
-SQL-
post
Post #1





Goście







Mam coś takiego:

  1. SELECT *, SUM(cena * (SELECT kurs FROM waluty WHERE nazwa=waluta)) AS cenakursowa
  2. FROM tabela WHERE nazwa='xx'
  3. GROUP BY id
  4. ORDER BY nazwa
  5. LIMIT 0, 15


To zapytanie przelicza mi po aktualnym kursie waluty cenę danego produktu.

W innej tabeli są przechowywane dodatkowe opcje (np. produkt ma: a,b,c - i chce rozszerzyć wyszukiwanie o produkty które mają np. tylko B) - zrobiłem coś takiego:

  1. SELECT *, SUM(ta.cena * (SELECT kurs FROM waluty WHERE waluty.nazwa=ta.waluta)) AS cenakursowa
  2. FROM tabela AS ta LEFT JOIN opcje AS op ON ta.nazwa='xx' AND ta.id=op.tabela_id AND op.nazwa='b'
  3. GROUP BY ta.id
  4. ORDER BY nazwa
  5. LIMIT 0, 15


Ale niestety zwraca mi również wyniki które nie mają "b".

Z góry dziękuje za pomoc w rozwiązaniu tego problemu.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




nie dales where a jedynie warunki na zlaczenie
  1. SELECT *, SUM(ta.cena * (SELECT kurs FROM waluty WHERE waluty.nazwa=ta.waluta)) AS cenakursowa
  2. FROM tabela AS ta LEFT JOIN opcje AS op ON ta.id=op.tabela_id WHERE ta.nazwa='xx' AND op.nazwa='b'
  3. GROUP BY ta.id
  4. ORDER BY nazwa
  5. LIMIT 0, 15

Mniej wiecej cos takiego
Go to the top of the page
+Quote Post
-SQL-
post
Post #3





Goście







Cytat(nospor @ 28.04.2008, 10:14:02 ) *
nie dales where a jedynie warunki na zlaczenie
  1. SELECT *, SUM(ta.cena * (SELECT kurs FROM waluty WHERE waluty.nazwa=ta.waluta)) AS cenakursowa
  2. FROM tabela AS ta LEFT JOIN opcje AS op ON ta.id=op.tabela_id WHERE ta.nazwa='xx' AND op.nazwa='b'
  3. GROUP BY ta.id
  4. ORDER BY nazwa
  5. LIMIT 0, 15

Mniej wiecej cos takiego


Niestety ale działa to tylko dla jednego warunku - jeśli chce znaleźć produkty które mają 'b' i 'c' to już nie zwraca żadnych wyników

  1. SELECT *, SUM(ta.cena * (SELECT kurs FROM waluty WHERE waluty.nazwa=ta.waluta)) AS cenakursowa
  2. FROM tabela AS ta LEFT JOIN opcje AS op ON ta.id=op.tabela_id WHERE ta.nazwa='xx' AND op.nazwa='b' AND op.nazwa='c'
  3. GROUP BY ta.id
  4. ORDER BY nazwa
  5. LIMIT 0, 15
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 04:31