226
Vývoj / Re:Dotaz na řešení pomocí SQL
« kdy: 21. 02. 2020, 11:09:16 »
- ukládat každý topic do své tabulky je zvěrstvo, fuj. Kdo to poradil, tak by měl bejt danej na pranýř a každejch pět minut bičovanej skriptama na SQLko.
A proč? Co když budu chtít např. zjistit celkovej počet příspěvků danýho uživatele?
- pokud chci záznamy, kde je autor z daného seznamu, anebo autorem článku, tak je to přeci jednoduchý. Nevymejšlet koniny. Co chci, všechny uživatele, kteří jsou buďto autorem článku, NEBO z danýho seznamu. Nebo je
OR
Tedy
'WHERE' => 'p.id IN ('.implode(',', $posts_id).') OR ....',
Pokud na toho autora potřebuju ještě joinout tabulku, tak ji joinout leftjoinem.Řešit to celé unionem jde taky, ale proč se drbat levou nohou za pravym uchem, když mám drbátko.... (je pravda, že v některých případech je union i rychlejší, protože některý DB optimalizátory neumí převádět JOIN na UNION, ale to na týdle úrovni znalostí neřeš).
- To implode v SQL dotazu se mi nelíbí, smrdí SQL injekcí. Sice tady to asi nehrozí, ale obecně bys mělmít bezpečnej mechanismus, jak vkládat do dotazu seznamy hodnot.
A proč? Co když budu chtít např. zjistit celkovej počet příspěvků danýho uživatele?
- pokud chci záznamy, kde je autor z daného seznamu, anebo autorem článku, tak je to přeci jednoduchý. Nevymejšlet koniny. Co chci, všechny uživatele, kteří jsou buďto autorem článku, NEBO z danýho seznamu. Nebo je
OR
Tedy
'WHERE' => 'p.id IN ('.implode(',', $posts_id).') OR ....',
Pokud na toho autora potřebuju ještě joinout tabulku, tak ji joinout leftjoinem.Řešit to celé unionem jde taky, ale proč se drbat levou nohou za pravym uchem, když mám drbátko.... (je pravda, že v některých případech je union i rychlejší, protože některý DB optimalizátory neumí převádět JOIN na UNION, ale to na týdle úrovni znalostí neřeš).
- To implode v SQL dotazu se mi nelíbí, smrdí SQL injekcí. Sice tady to asi nehrozí, ale obecně bys mělmít bezpečnej mechanismus, jak vkládat do dotazu seznamy hodnot.