webForumDet fria alternativet

Join med fyra tabeller

8 svar · 425 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#1

Hej :(

Om jag har följande kod:

sSQL = 	"SELECT tblExArticle.eNumber, tblExArticle.articleName, tblExArticle.articleUnit, tblExPrice.articlePrice, tblExCategory.articleCategory, " &_
		"tblExCategory.articleCategoryName, tblExPrice.articleSupplierId, tblExSupplier.SupplierName " &_
		"FROM tblExSupplier INNER JOIN (tblExCategory INNER JOIN (tblExArticle INNER JOIN tblExPrice ON tblExArticle.eNumber = tblExPrice.eNumber) " &_
		"ON tblExCategory.articleCategory = tblExPrice.articleCategory) ON tblExSupplier.SupplierId = tblExPrice.articleSupplierId " &_
		"WHERE tblExPrice.articleSupplierId = " & iSupplierId & ""

jag joinar fyra tabeller tblExPrice tblExArticle och tblExCategory tblExSupplier

Vad händer om ett fält är tomt (null) då listas inte något eller?

Hur kan man göra för att lista aven om något värde i någon tabell är tomt?

Mvh
Henrik :(

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Hej!

Experimentera med att byta INNER mot LEFT. t1 LEFT join t2 betyder att tupler från t1 kommer att tas med även om joinen fallerar.

devotionMedlem sedan jan. 20013 582 inlägg
#3

ok, ska jag köra Left på alla menar du?

Mvh

@ndersMedlem sedan juni 200032 969 inlägg
#4

Använd LEFT (dvs en OUTER JOIN) när du vill ha resultat oberoende av om joinen träffar eller inte. Träffar inte joinen får du då NULL i alla fält från den "högra" tabellen i joinen.

Mvh

devotionMedlem sedan jan. 20013 582 inlägg
#5

:(
Ändrade till:

sSQL = 	"SELECT tblExArticle.eNumber, tblExArticle.articleName, tblExArticle.articleUnit, tblExPrice.articlePrice, tblExCategory.articleCategory, " &_
		"tblExCategory.articleCategoryName, tblExPrice.articleSupplierId, tblExSupplier.SupplierName " &_
		"FROM tblExSupplier LEFT JOIN (tblExCategory LEFT JOIN (tblExArticle LEFT JOIN tblExPrice ON tblExArticle.eNumber = tblExPrice.eNumber) " &_
		"ON tblExCategory.articleCategory = tblExPrice.articleCategory) ON tblExSupplier.SupplierId = tblExPrice.articleSupplierId " &_
		"WHERE tblExPrice.articleSupplierId = " & iSupplierId & ""

Fick felmeddelande:

Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Drivrutin för ODBC Microsoft Access] Kopplingsuttrycket stöds inte.
/articles/administration/addUppdragNuArticles.asp, line 41

Använder access....

Mvh
henrik
:(

@ndersMedlem sedan juni 200032 969 inlägg
#6

vore fint om du kunde skriva ut färdig sql-fråga och göra den lite mer läsbar :)

mvh

devotionMedlem sedan jan. 20013 582 inlägg
#7

okej, ska göra ett försök!

sSQL = 	"SELECT tblExArticle.eNumber, tblExArticle.articleName, tblExArticle.articleUnit, tblExPrice.articlePrice, tblExCategory.articleCategory, " &_
		"tblExCategory.articleCategoryName, tblExPrice.articleSupplierId, tblExSupplier.SupplierName " &_
		"FROM tblExSupplier " &_ 
		"LEFT JOIN " &_ 
		"(tblExCategory LEFT JOIN (tblExArticle LEFT JOIN tblExPrice ON tblExArticle.eNumber = tblExPrice.eNumber) " &_
		"ON tblExCategory.articleCategory = tblExPrice.articleCategory) " &_
		"ON tblExSupplier.SupplierId = tblExPrice.articleSupplierId " &_
		"WHERE tblExPrice.articleSupplierId = " & iSupplierId & ""

Utskriven:

SELECT tblExArticle.eNumber, tblExArticle.articleName, tblExArticle.articleUnit, tblExPrice.articlePrice, tblExCategory.articleCategory, tblExCategory.articleCategoryName, tblExPrice.articleSupplierId, tblExSupplier.SupplierName 
FROM tblExSupplier 
LEFT JOIN 
(tblExCategory LEFT JOIN (tblExArticle LEFT JOIN tblExPrice ON tblExArticle.eNumber = tblExPrice.eNumber) 
ON tblExCategory.articleCategory = tblExPrice.articleCategory) 
ON tblExSupplier.SupplierId = tblExPrice.articleSupplierId 
WHERE tblExPrice.articleSupplierId = 1

Mvh
henrik

Peter SMedlem sedan dec. 20025 483 inlägg
#8

Vad händer med:

SELECT tblExArticle.eNumber
     , tblExArticle.articleName
     , tblExArticle.articleUnit
     , tblExPrice.articlePrice
     , tblExCategory.articleCategory
     , tblExCategory.articleCategoryName
     , tblExPrice.articleSupplierId
     , tblExSupplier.SupplierName
  FROM ((tblExSupplier 
 LEFT
  JOIN tblExPrice
    ON tblExSupplier.SupplierId = tblExPrice.articleSupplierId)
 LEFT
  JOIN tblExArticle
    ON tblExArticle.eNumber = tblExPrice.eNumber)
 LEFT 
  JOIN tblExCategory  
    ON tblExCategory.articleCategory = tblExPrice.articleCategory
 WHERE tblExPrice.articleSupplierId = " & iSupplierId & ""

?

devotionMedlem sedan jan. 20013 582 inlägg
#9

Det händer bara fina saker... Funkar finfint! :)

Tack igen Peter S

Nu är jag helglad igen... (nästan i alla fall... det finn säker massa andra skaer som skall strula....)

Tack!

Mvh
Henrik

143 ms totalt · 3 externa anrop · v20260731065814-full.91fd2ad2
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)