webForumDet fria alternativet

Slå ihop två tabeller på nå vis!

Databaser & SQL

10 svar · 1 029 visningar · startad av Asa

Medlem sedan dec. 20011 860 inlägg
Frågan#1

Jar en tabell med produkter och en med kategorier. I kategoritabellen har jag ett fält som heter visa. Om den är satt till 1 skall produkter visas på en sida där man söker ut produkter. Är den satt till 0 skall såklart inte produkten visas. Min produktsökning som jag har idag ser ut så här:

SELECT * FROM varor Where visa=1 and (kat1<>0 or tkat1<>0 or kat2<>0 or tkat2<>0 or kat3<>0 or tkat3<>0) and (huvudprodukt like '%$term%' or produkt like '%$term%' or beskrivning like '%$term%')

Kategori Tabellen:

kategorier
 - kategori - namn
 - katID - tal unikt id
 - tkatID - 0 vid huvudkategori, annars katID så man vet vilken kategori den hör till
 - visa - 1= visa, 0=dölj
Medlem sedan dec. 20011 860 inlägg
#2

Ingen som vet hur man på nåt vis i min kontroll får in och kollar mot kategoritabellen?!

Medlem sedan jan. 2008280 inlägg
#3

Hur ser produkttabellen ut?

Medlem sedan dec. 20011 860 inlägg
#4

varor:
prodID - unikt id
huvudprodukt - text
produkt - text
beskrivning - text
visa - tal
kat1 - tal
tkat1 - tal
kat2 - tal
tkat2 - tal
kat3 - tal
tkat3 - tal

Man skall kunna välja tre kategorier till varje produkt. kat är kategorins id och sen tkat är kat´s överkategori. Därav denna: kat1<>0 or tkat1<>0 or kat2<>0 or tkat2<>0 or kat3<>0 or tkat3<>0

Medlem sedan dec. 20011 860 inlägg
#5

Ingen som har nån aning hur man skall skriva?!

Medlem sedan dec. 201027 inlägg
#6

Du borde använda en kopplingstabell istället för att köra med massa extra kolumner.

Vad exakt är det du vill få ut? Hänger inte riktigt med

Medlem sedan dec. 20011 860 inlägg
#7

Hur tänker du nu? Kan du förklara hur kopplingstabellen skall se ut?

En produkt kan ligga under 3 olika kategorier. Nu har jag en sida där jag söker produkter och jag tänkte göra om så att man kan välja att en kategori är aktiv eller inte. Så om det skulle vara att kategorierna är inaktiva skall ej produkten visas.

Men det kanske är smartare att göra som du menar men som sagt, hur skall det se ut och hur hämtar man det då?

Medlem sedan juni 2009920 inlägg
#8

En bättre struktur är att ha en tabell "product_category" med två kolumner. Ena kolumnen "product" och andra "category". På så vis kan man koppla en produkt till hur många kategorier man vill. Lägg primary key över båda kolumnerna så slipper du dubletter.

Medlem sedan dec. 20011 860 inlägg
#9

Okej, skall kika på hur enkelt det blir att göra om detta nu när jag har allt klart. Men hur hämtar man sen då om man har aktiv och inte aktiv i en kategori?!

Medlem sedan mars 20034 471 inlägg
#10

Exempel: Hämtar alla produkter (endast en gång) som tillhör minst en aktiv kategori om Aktiva sådana är 1 och inaktiva 0 i en bitkolumn:

SELECT DISTINCT P.* FROM Product P INNER JOIN Category C ON P.CategoryID = C.CategoryID AND C.IsActive = 1
Medlem sedan dec. 20011 860 inlägg
#11

Tackar, ska testa :)

274 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
140 ms — ändringar (db)