Autor | Zpráva | ||
---|---|---|---|
caradoc Profil * |
#1 · Zasláno: 5. 1. 2014, 21:28:37
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 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 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 |
#3 · Zasláno: 6. 1. 2014, 08:29:43
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 * |
#4 · Zasláno: 6. 1. 2014, 08:53:20
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 |
||
Časová prodleva: 11 let
|
0