webForumDet fria alternativet

Where vs From

Databaser & SQLur Databashanterare & SQL

8 svar · 506 visningar · startad av Dino

Medlem sedan sep. 20011 914 inlägg
Frågan#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
Medlem sedan aug. 20051 601 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...

Medlem sedan maj 20018 027 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.

Medlem sedan sep. 20011 914 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?

Medlem sedan maj 20018 027 inlägg
#5

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

Medlem sedan sep. 20011 914 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.

Medlem sedan dec. 200539 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

Medlem sedan sep. 20011 914 inlägg
#8

Tack det var mer vad jag var ute efter.

Medlem sedan sep. 20011 914 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.

131 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)