Autor | Zpráva | ||
---|---|---|---|
Manny Profil |
Následující dotaz mi vypisuje články podle kategorií. Bohužel tento dotaz vypisuje článek duplicitně pokud je zařazen ve více kategoriích.
SELECT ".PREFIX."obsah.id, ".PREFIX."obsah.title, ".PREFIX."articles.perex, ".PREFIX."articles.date, ".PREFIX."articles_on_category.id_category FROM ".PREFIX."obsah LEFT JOIN ".PREFIX."articles ON ".PREFIX."articles.id = ".PREFIX."obsah.id LEFT JOIN ".PREFIX."articles_on_category ON ".PREFIX."articles_on_category.id_article = ".PREFIX."articles.id WHERE ".PREFIX."obsah.type = 6 ORDER BY ".PREFIX."articles.id DESC DISTINCT výpis a patrně subselect na sadu kategorií
|
||
tiso Profil |
#2 · Zasláno: 8. 9. 2015, 21:42:21
S použitím aliasov by to mohlo vyzerať takto:
SELECT o.id, o.title, a.perex, a.date, GROUP_CONCAT(aoc.id_category) FROM ".PREFIX."obsah p LEFT JOIN ".PREFIX."articles a ON a.id = o.id LEFT JOIN ".PREFIX."articles_on_category aoc ON aoc.id_article = a.id WHERE o.type = 6 GROUP BY a.id ORDER BY a.id DESC |
||
Manny Profil |
#3 · Zasláno: 8. 9. 2015, 21:57:07
tiso:
Těm tvým aliasům moc nerozumím |
||
tiso Profil |
#4 · Zasláno: 8. 9. 2015, 23:40:20
Manny: a skúšal si ten selekt, či robí to čo má?
|
||
Manny Profil |
#5 · Zasláno: 9. 9. 2015, 06:49:02
tiso:
Právě že mi db hlásí, že je neznámý sloupec. |
||
tiso Profil |
#6 · Zasláno: 9. 9. 2015, 09:31:20
a.`date` |
||
Manny Profil |
#7 · Zasláno: 9. 9. 2015, 09:45:06
Znovu jsem se na to podíval a chyba byla v překlepu aliasu pro obsah - o
Teď už to vypisuje správně. Ještě bych ale potřeboval získat sadu id kategorií pro každý řádek (článek). Něco jako SELECT id_category FROM aoc WHERE id_article = o.id
Šel by použít SUBSELECT ?
|
||
Kajman Profil |
#8 · Zasláno: 9. 9. 2015, 10:54:11
Manny:
Tu sadu by měl vrátit poslední sloupec. Také mu můžete dát alias, ať se s tím lépe pracuje. Také se můžete podívat na různé možnosti dolování závislých dat a jejich svižnost. http://php.vrana.cz/srovnani-dotazu-do-zavislych-tabulek.php |
||
Manny Profil |
#9 · Zasláno: 9. 9. 2015, 14:11:44
Kajman:
Super už to funguje. Jen ještě poslední doplnění. Proč mi nefunguje podmínka s WHERE aoc.id_category = IN (2,3) , kde potřebuji vybrat jen ty záznamy, kde id_category je např. 2 a 3.
|
||
juriad Profil |
#10 · Zasláno: 9. 9. 2015, 14:12:42
WHERE aoc.id_category IN (2,3) |
||
tiso Profil |
#11 · Zasláno: 9. 9. 2015, 15:57:50
Manny sorry, ten preklep som si nevšimol
|
||
Časová prodleva: 10 let
|
0