webForumDet fria alternativet

Where vs From

8 svar · 506 visningar · startad av Dino

DinoMedlem sedan sep. 20011 918 inlägg
#1

Vad är det för skillnad på.

Alt 1:

SELECT t1.Title
FROM Table1 t1 INNER JOIN
          Table2 t2 ON t1.Id = t2.Table1Id 	
WHERE t1.Active = 1

Alt 2:

SELECT t1.Title
FROM Table1 t1 INNER JOIN
          Table2 t2 ON t1.Id = t2.Table1Id AND t1.Active = 1
CassadyMedlem sedan aug. 20051 393 inlägg
#2

Hmm... jag är ingen expert men såvitt jag vet så innebär det ingen skillnad resultatmässigt. Det ena kanske är lämpligare än det andra dock, beroende på fall...

UlfTMedlem sedan maj 20016 050 inlägg
#3

Eftersom rubriken är Where vs from, förmodar jag att det är skillnaden mellan dessa ord som efterfrågas. From används för att specificera vilken tabell man frågar efter information i. Where specificerar ett villkor.

DinoMedlem sedan sep. 20011 918 inlägg
#4

I alt 1 ligger villkoret t1.Active = 1 i WHERE, i alt 2 ligger det i FROM. Så frågan är då vari skillnaden ligger?

UlfTMedlem sedan maj 20016 050 inlägg
#5

Det är väl bara ett exempel på att man kan skriva sql-frågor på olika sätt.

DinoMedlem sedan sep. 20011 918 inlägg
#6

Jo, men tolkar även databasmotorn(???) båda alternativen på samma sätt eller finns det någon som helst skillnad som gör att man skall använda det ena framför det andra. Tex att nu ligger villkoret i FROM då behöver motorn inte utföra procedur x vilket den skulle behöva om villkoret låg i WHERE.

hampus_bMedlem sedan dec. 200540 inlägg
#7

INNER JOIN är semantiskt likställt med frånvaron av en join (dvs en where). Det är helt enkelt samma sak.

En anledning att använda JOIN-syntaxen är att du vänjer dig vid den syntaxen och kan variera den med t.ex LEFT JOIN, som INTE är samma sak...

//Hampus

DinoMedlem sedan sep. 20011 918 inlägg
#8

Tack det var mer vad jag var ute efter.

DinoMedlem sedan sep. 20011 918 inlägg
#9

Fick även ett förtydligande på annat håll.

In your examples there is no difference.
In the case of an OUTER join it does make a difference because the join condition is evaluated first (logically speaking) and then the WHERE clause is applied to the result.

Genererad på 373 ms · cache AV · v20260730165559-full.f96bc7eb