webForumDet fria alternativet
Logga in / Bli medlem

Join med fyra tabeller

Databaser & SQL

8 svar · 425 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Trådstart#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 :(

Medlem 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.

Medlem sedan jan. 20013 582 inlägg
#3

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

Mvh

Medlem sedan juni 200032 967 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

Medlem 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
:(

Medlem sedan juni 200032 967 inlägg
#6

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

mvh

Medlem 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

Medlem 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 & ""

?

Medlem 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

257 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)