Pořadí operandů v podmínce JOINu rubrika: Databáze: SQL

5 vaclav.sir
položil/-a 3.7.2014

Máte nějaký coding standard pro to, v jakém pořadí uvádět operandy u JOIN podmínek? Který z těchto dvou zápisů preferujete a který považujete za yoda notation?

SELECT person.name, address.city FROM person
  JOIN address ON address.id = person.address_id;
 
SELECT person.name, address.city FROM person
  JOIN address ON person.address_id = address.id;

Osobně jsem to dřív neřešil, pak jsem začal všude používat první způsob, ale teď když se moje IDE ty podmínky naučilo napovídat, tak někdy napoví tak a jindy onak. Rád bych jim to nareportoval, ale nejsem si úplně jistý, který způsob je ten "správný". V cizím kódu se také setkávám s oběma zápisy zhruba stejně často.

Komentáře

  • kohven : Myslel jsem, že yoda notation nějak souvisí s konstantami a (ne)přiřazováním v podmínkách. Jaký byl důvod to začít řešit, když dříve jsi to neřešil? 3.7.2014
  • vaclav.sir : Yoda notation je zápis podmínek jakoby obráceným slovosledem - zjišťuješ, jestli "X je rovno pěti" otázkou "pěti rovno je X". V některých jazycích to má spornou výhodu v tom, že to crashne, když si spleteš operátor, v SQL ne. Proč to řeším? Protože mi přijde, že taková konvence přispívá k čitelnosti kódu. Pokud mám vždy na stejné straně primární klíč a na druhé to, podle čeho ten záznam tahám, tak se mi to mnohem rychleji čte, než když to je na každém řádku jinak. O užitečnosti konvence jako takové jsem přesvědčený, pouze si nedokážu vybrat, která varianta je přirozenější a která spíš připomíná mistra Yodu. 3.7.2014
  • vaclav.sir : Kdyby to někoho zajímalo, vybral jsem si druhý způsob a napovídání v IDE od Jetbrains už tu konvenci drží taky: https://youtrack.jetbrains.com/issue/IDEA-132316 31.12.2015
odkaz
4 lt
odpověděl/-a 3.7.2014

Ja už roky používam druhý spôsob. Beriem to tak že prvá tabulka je "hlavná", ku ktorej pripájam ostatné. Plus sa mi lepšie číta zápis:

SELECT p.name, a.city, o.title FROM person p
  JOIN address a     ON p.address_id = a.id
  JOIN other_talbe o ON p.other_id = o.id

Komentáře

  • podhy : dělám to stejně a ze stejného důvodu :-) 3.7.2014

Pro zobrazení všech 4 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.