webForumDet fria alternativet

Fel vid hämtning?

Databaser & SQLur Databashanterare & SQL

5 svar · 563 visningar · startad av streetrobban

Medlem sedan jan. 20011 140 inlägg
Frågan#1

Hej!

Jag undrar om någon kan hjälpa mig med nedanstående kod. Jag har 3 tabeller (Products, ProductsCategories och ProductsSubCategories) där jag sparar produkter och deras kategorier. Nedan kod ska lista alla kategorier och deras underkategorier. Men problemet är att en huvudkategori (ProductsCategories) inte visas om det inte finns någon underkategori inlagd (ProductsSubCategories). Vet någon hur man kan skruva till koden så att kategorin hämtas ändå? Även fast det inte finns någon underkategori?

		// Hämta alla kategorier
		$get = mysql_query("SELECT Cat.ID AS CategoryID, Cat.Name AS CategoryName, SubCat.ID AS SubCategoryID, SubCat.Name AS SubCategoryName, SubCat.ParentID AS SubCategoryParentID
		FROM ProductsSubCategories AS SubCat
		JOIN ProductsCategories AS Cat ON Cat.ID = SubCat.ParentID
		ORDER BY Cat.Sortorder ASC, Cat.Name ASC, SubCat.Name ASC");
		while($row = mysql_fetch_array($get)) 
		{
			// Hämta från Categories
			$CategoryID = $row['CategoryID'];
			$CategoryName = $row['CategoryName'];
			
			// Hämta från SubCategories
			$SubCategoryID = $row['SubCategoryID'];
			$SubCategoryName = $row['SubCategoryName'];
			$SubCategoryParentID = $row['SubCategoryParentID'];
Medlem sedan juni 200032 969 inlägg
#2
        FROM ProductsCategories AS Cat 
        LEFT JOIN ProductsSubCategories AS SubCat ON Cat.ID = SubCat.ParentID
Medlem sedan jan. 20011 140 inlägg
#3

Perfekt, tack för hjälpen @nders!

Medlem sedan juni 200032 969 inlägg
#4

Vasse! :)

Medlem sedan jan. 20011 140 inlägg
#5

Jag kanske kan besvära dig med en till SQL fråga @nders.

Jag listar alla artiklar från min databas och artiklar som har Prod.SubCategory = 0 kommer inte att visas med följande kod. Kan du hjälpa mig att skriva ut även dem?

						$get = mysql_query("SELECT Prod.ID, Prod.Name, Prod.ForSaleSE, Prod.ForSaleNO, Prod.ForSaleDK, Prod.ForSaleFI, Prod.Sold, Cat.Name AS CategoryName, Bran.Name AS BrandName, SubCat.Name AS SubCategoryName										
						FROM Products Prod
						JOIN ProductsCategories AS Cat ON Prod.CategoryID = Cat.ID
						JOIN ProductsSubCategories AS SubCat ON Prod.SubCategoryID = SubCat.ID
						JOIN ProductsBrands AS Bran ON Prod.BrandID = Bran.ID
						WHERE Prod.ForSaleSE = '0' AND Prod.ForSaleNO = '0' AND Prod.ForSaleDK = '0' AND Prod.ForSaleFI = '0' AND Prod.Sold = '0'
						ORDER BY Prod.CategoryID DESC, Prod.SubCategoryID DESC, Prod.Name ASC");
Medlem sedan juni 200032 969 inlägg
#6

Jag tror att du borde, i det här sammanhanget, använda LEFT JOIN istället för JOIN, som i mitt exempel ovan.

mvh

137 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)