Autor Zpráva
Gecko
Profil *
Dobrý večer,
rád bych se Vás zeptal na následující. Morduji se nyní s filtrováním, uvedu na příkladu.

Mám tabulku firmy:
ID | Nazev | Kraj 
1  - Firma A - 1
2 - Firma B - 2 
2 - Firma C - 3

atd. V tabulce je sloupec Kraj, ve kterém je číslo představující kraj.

Poté mám tabulku s ceníkem:
ID | Nazev | Firma | Cena | Kategorie 
1 - Tužka - 1 - 300 - 2
2 - Pero - 2 - 150 - 2
3 - Propiska -  3 - 50 - 3
atd.
Do tabulky ukládám název zboží, ID firmy, cenu a kategorii (pro možnost filtrování).

Rád bych nyní na jedné stránce porovnal stejné zboží všech firem ze stejné kateorie. Problém je, že neumím odladit dostatečně SQL ve filtrování. Sestavil jsem si následující kod:

$sql = DB::query("SELECT 
cenik.id AS cenik_id,  cenik.*, firmy.*     
FROM `firmy-seznam` firmy 
LEFT JOIN `firmy-cenik` cenik 
ON cenik.kategorie=firmy.id
WHERE Kraj=1
 GROUP BY firma
");

Jenomže nevím, jak vybrat z tabulky firmy-cenik pouze kategorii např. 2 (Psací potřeby).

Nevíte jak stím?

Děkui mnohokrát
lionel messi
Profil
Gecko:
Nástrel od boku:
SELECT 
cenik.id AS cenik_id,  cenik.*, firmy.*     
FROM `firmy-seznam` firmy 
LEFT JOIN `firmy-cenik` cenik 
ON cenik.kategorie=firmy.id
WHERE Kraj=1 AND Kategorie = 2
 GROUP BY firma
abc
Profil
Řekl bych spíše:
SELECT 
cenik.id AS cenik_id,  cenik.*, firmy.*     
FROM `firmy-seznam` firmy 
LEFT JOIN `firmy-cenik` cenik 
ON cenik.kategorie=firmy.id
WHERE Kraj=1 AND cenik.kategorie = 2
 GROUP BY firma

Ale koukám, že te sloupec je jen v jedné tabulce, tak by to mohlo fungovat i dle [#2]
Tori
Profil
Jestli porovnat zboží znamená asi takovýhle výstup:
Srovnání cen zboží, Kategorie: 2, Kraj: 3

Tužka
- Firma 1: 10 Kč
- Firma 87: 12 Kč
Mikrotužka Pentel 0.9
- Firma 2: 150 Kč
...
, tak bych zkusila:
SELECT c.id cenik_id, c.*, f.*
FROM `firmy-cenik` c 
INNER JOIN `firmy-seznam` f ON f.id = c.firma
WHERE f.kraj = 3 AND c.kategorie = 2
ORDER BY c.nazev, c.cena
Nepochopila jsem, k čemu tam bylo seskupování. Jestli může být v ceníku více záznamů pro každou kombinaci zboží a firmy a chcete z nich brát jen ten nejlevnější, řešilo by se to poddotazem (viz FAQ).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: