Autor Zpráva
caradoc
Profil *
Dobrý den poprosil bych o radu
představte si dotaz který vrací třeba cca 50 záznamů seřazených podle abecedy
SELECT id, nazev FROM... WHERE... LIMIT 50
v další tabulce je seznam fotografií (třeba 5 fotek) k příslušnému ID v první tabulce,
jak zařídím abych v jednom selektu získal seznam o 50 záznamech včetně počtu fotografií ke každému z nich získané jiné tabulky
laicky řečeno
SELECT id, nazev, (SELECT COUNT(id) FROM fotky WHERE podminka LIMIT 1) FROM... WHERE... LIMIT 50
a právě nevím jak vytvořit onu podmínku pro Count v selektu
děkuji za pomoc Caradoc
juriad
Profil
Pokud přidám aliasy (ta část AS, samotné slovo AS je však nepovinné) k jednotlivým tabulkám, tak bude jasné o které sloupce se jedná. Navíc se můžeš snadno odkazovat na sloupec z konkrétní tabulky. (Lze to i bez aliasů, ale takto mi to přijde přehledné a zdá se to být dobrou praxí.)
SELECT p.id, p.nazev, (SELECT COUNT(f.id) FROM fotky AS f WHERE f.produkt = p.id)
FROM produkty AS p ... 
WHERE ... 
ORDER BY p.nazev
LIMIT 50

Zajímavé čtivo o tomto typu dotazů: http://www.root.cz/clanky/korelovane-vnorene-dotazy-nepouzivat-a-nahradit/. Ale tebe výkon nejspíš trápit nebude; zvlášť, pokud se jedná o 50 položek.
Kajman
Profil
juriad:
výkon nejspíš trápit nebude

V tomto případě (malý limit a řazení podle jiného sloupce než počet řádků) bývá často takovýto korelovaný dotaz nejrychlejší varianta.
caradoc
Profil *
oběma děkuji za pomoc, je neuvěřitelné "jak je řešení jednoduché" když se člověk trochu popostrčí,
můj dotaz funguje jak má a dává mě možnosti tvořit lepší výsledky mé amatérské snahy

Caradoc

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:

0