Nu wil ik een zoek functie maken waarbij gezocht kan worden op kleur en vorm.
Maar dat betekend dat als item1 rond en blauw is, deze maar 1 keer voorkomt in de result resultaten.
Maar hoe maak ik dat ? Door een inner join query te maken ?
Waar kan ik op zoeken?
Inderdaad met wat joins.
Eerst maak je rijen met alle mogelijkheden.
Die filter je dan met:
WHERE soort1 = '".$vorm."'
AND soort2 = '".kleur."'
Nu is soort1 en soort2 natuurlijk een waardeloze benaming, aangezien je alsnog niet weet wat het inhoudt.
Is er ook een soort3?
Of spreek je bewust zo abstract mogelijk zodat we er zo min mogelijk van snappen?
Daarnaast is een zin als 'ik heb een 3 tabellen' niet echt duidelijk. Heb je een (één) tabel? Of heb je drie tabellen?
Heel erg bedankt voor uw reactie.
Ik spreek bewust abstract omdat ik dacht dat het juist duidelijkheid gaf. Mijn excuus als dit juist voor onduidelijkheid zorg.
Probeer het nog een keer.
3 tabbellen.
Tabel 1 item1 Met detail informatie zoals afmetingen.
Tabel 2 soort1 Kleuren
Tabel 3 soort2 vorm
In zoeken gebeuren kan ik dus "filteren"
kleur en vorm met daarbij de resultaten van items.
is dit zo duidelijker ?
[size=xsmall]Toevoeging op 03/11/2014 17:21:56:[/size]
$data = mysql_query("SELECT * FROM item1 INNER JOIN soort1 ON item1.RecId=soort1.itemid INNER JOIN soort2 ON item1.RecId = soort2.itemid")
Als ik dit heb, krijg ik resultaat van alles. Maar niet als ik where erachter zet.
[size=xsmall]Toevoeging op 03/11/2014 19:22:06:[/size]
Ik heb nu dit :
$data = mysql_query("SELECT * FROM item1 INNER JOIN soort1 ON item1.RecId=soort1.itemid INNER JOIN soort2 ON item1.RecId = soort2.itemid where soort1 = 'blauw' OR soort2.vorm='vierkant' ")
Probleem : Als ik $row['RecId'] heb, dan pak ik die van soort1.
En niet van item.
$row['RecId'] kun je oplossen door na de SELECT de velden te (her)noemen die je nodig hebt.
Bijv SELECT item1.RecId AS RecID, soort1.kleur AS kleur, soort2.vorm AS vorm etc.
In plaats van een INNER JOIN, wat gebeurt er als je een UNION JOIN gebruikt?
Probeer eerst een volledige lijst te krijgen met alle mogelijke varianten van items wat betreft kleuren en vormen.
Nu zegt 'item' ook zeer weinig: gaat het om vazen?
Ik dacht een algemeen iets te maken zodat ik voor algemeen kan gebruiken.
Maar gaat om deuren, bepaald soort hout en vorm raam.
Union gaat toch niet werken ? de tabbellen zijn niet gelijk toch?
Als ik 1 join doe dan gaat wel goed
$data = mysql_query("SELECT * FROM item1 INNER JOIN soort1 ON item1.RecId=soort1.itemid where soort1 = 'blauw'")
krijg ik 3 resultaten.
doe ik
$data = mysql_query("SELECT * FROM item1 INNER JOIN soort1 ON item1.RecId=soort1.itemid INNER JOIN soort2 ON item1.RecId = soort2.itemid where soort1 = 'blauw' OR soort2.vorm='vierkant' ")
Ik begrijp niet hoe je met de 1e query 3 resultaten kun krijgen als de tabellen zijn zoals je in begin opgeeft (op 3/11 15:17).
Er is enkel Item1 in blauw. En dan in rond en vierkant. Dus 2 resultaten.
Deze query werkt volgens mij toch al niet zo, omdat soort1 = 'blauw' moet zijn soort1.kleur = 'blauw'.
De 2e query zou maar 1 resultaat mogen opleveren. En geen 7.
Hoe kom jij aan 7?
$data = mysql_query("SELECT deur.RecId as deurid,deur.titel,deur.foto,deur.tekst FROM deur inner JOIN soorthout ON deur.RecId=soorthout.deurid where soorthout.hout = 'grenen'")
recid van deur : 5 3 en 6
doe ik innerjoin beide :
$data = mysql_query("SELECT deur.RecId as deurid,deur.titel,deur.foto,deur.tekst FROM deur inner JOIN soorthout ON deur.RecId=soorthout.deurid INNER JOIN raam ON deur.RecId = raam.deurid where soorthout.hout = 'grenen' OR raam.vorm='vierkant'")
recid van deur 5 4 en 2
ik mis dus 3 en 6
Excuus voor onduidelijkheid. Is het zo duidelijker :)?
Heel erg bedankt alvast voor meedenken!
In je 2e query zit een fout: soorthout.deurid = 'grenen' moet zijn soorthout.hout = 'grenen'
Verder begrijp ik niet waarom je deur 2 krijgt, want die is parallel rechthoekig. Ik zou verwachten dat je deur 1 krijgt.
Deur 6 komt niet in je tabel deur voor, dus ook raar dat je die bij je 1e query krijgt. Maar dat kan een foutje in je voorbeeld zijn. Want deurid 6 heeft wel een houtsoort, maar geen deur en geen vorm.