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?
Breid je sqls eens uit met in de select ook soorthout.hout en raam.vorm (hout alleen in de 1e en beide in de 2e) en laat je volledige resultaten eens zien.
$data = mysql_query("SELECT deur.RecId as deurid,deur.titel,deur.foto,deur.tekst,soorthout.hout en raam.vorm 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'")
nog steeds zelfde.
5,4,2
@edit heb een fout gemaakt, 2 hoor er wel tussen. Ik had naar de recid gekeken. dacht dat 5 2 keer moest voorkomen.
1 opgelost, alleen 1 en 6 laat hij nog niet zien.
misschien dat er fout word gemaakt met : deur.RecId as deurid ?
Bijna: "en raam.vorm" moet natuurlijk ", raam.vorm" zijn, dus komma ipv en.
Maar laat dan de output eens zien.
Misschien dat het helpt als je haakjes gebruikt:
SELECT
deur.RecId as deurid,
deur.titel,
deur.foto,
deur.tekst,
soorthout.hout,
raam.vorm
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')
Met output bedoel ik het resultaat van de sql statements. Vanuit PHPMyadmin of iets dergelijks waar je de select uitvoert.
Kijk ook even of de data in vorm correct is.
Bij deur 2 zie ik vierkant. als die punt er staat vind je hem niet
Deur 6 heeft geen vorm record dus daarom zie je die ook niet.
Dit komt door je INNER JOIN, dan moet het record er zijn.
Ik begrijp niet waarom je 4 en 1 wel ziet. Deur 4 heeft lege vorm en Deur 1 heeft geen houtsoort.
Bij deur 2 zie ik vierkant. als die punt er staat vind je hem niet < die punt heb ik er automatische bijgezet, die staat natuurlijk niet in de tabel
Deur 6 heeft wel een hout soort grenen waar op gezocht word, dus die moet toch getoond worden ?
Door mijn fout van recid en vorm id heb ik die geedit en in slordigheid 4 leeggehaald. sorry.
deur 1 heeft wel een raam vorm.
Kan ik uit je tekst opmaken dat er bij soort hout en vorm beide ingevuld moeten zijn wil je het in de resulaat zien?
Als ik sql invoer bij phpmyadmin is dit resultaat :
deurid titel foto tekst soorthout vorm
5 test 4.jpg grenen, privefeest
4 test 4.jpg vuren, vierkant
2 test 4.jpg douglas, vierkant
missing : 1 en 6 na mijn idee.
tabellen nog keer correct
Kan ik uit je tekst opmaken dat er bij soort hout en vorm beide ingevuld moeten zijn wil je het in de resulaat zien?
Ja dat is zo, komt door de INNER JOIN.
Als je dat niet kunt gebruiken omdat soms houtsoort of vorm niet aanwezig zijn, moet je LEFT OUTER JOIN gebruiken. Die geeft dan NULL in hout of vorm als het niet voorkomt, dus dat zul je dan ook mee moeten nemen in je WHERE, bijv WHERE soorthout.hout in ('grenen', NULL).
Vwb je resultaat:
Deur 5 klopt want die heeft grenen (en heeft een vorm)
Deur 4 klopt want die is vierkant (en heeft een soorthout)
Deur 2 klopt want die is vierkant (en heeft een soorthout)
Deur 1 heeft geen houtsoort
Deur 3 heeft geen vorm
enz
natuurlijk wil ik dat doen.
Zal ik ook gelijk klein tutorial van maken ? verschil tussen left join en inner join en hoe je meerdere tabbellen 1 resultaat kan maken ?