Ik ben nog niet erg bekend met join query, en vroeg me af of iemand kan vertellen hoe de query er uit hoort te zien, want mijn voorbeeldje werkt uiteraard niet :(
$voertuigdetails = "SELECT * FROM voertuigdata_voertuig 
                            INNER JOIN voertuigdata_details ON voertuigdata_voertuig.hexon_nr = voertuigdata_details.hexon_nr
                            INNER JOIN voertuigdata_spec ON voertuigdata_voertuig.hexon_nr = voertuigdata_spec.hexon_nr
                            INNER JOIN voertuigdata_financieel ON voertuigdata_voertuig.hexon_nr = voertuigdata_financieel.hexon_nr
                            (WHERE hexon_nr = '$_GET[voertuig_nr]')"
                            ;
Het gebruik van SELECT * is sowieso al een slechte gewoonte, maar met JOINS mag je dat NOOIT doen.

En wat gaat er fout? Wat voor melding krijg je?
Verkeerd topic.... :boink:
mysqli_query($con,$voertuigdetails) or die ("Couldn’t execute query.");


Ahh als ik het goed begrijp kan ik dus niet snel alle data uit de beoogde join tabellen halen op deze manier?
Omdat dit wel werkt:
$sql = "SELECT * FROM voertuigdata_voertuig 
                            INNER JOIN voertuigdata_details ON voertuigdata_voertuig.hexon_nr = voertuigdata_details.hexon_nr
                            INNER JOIN voertuigdata_spec ON voertuigdata_voertuig.hexon_nr = voertuigdata_spec.hexon_nr
                            INNER JOIN voertuigdata_financieel ON voertuigdata_voertuig.hexon_nr = voertuigdata_financieel.hexon_nr
                            ORDER BY merk ASC LIMIT $start_from, 5";
                            $rs_result = mysqli_query ($con,$sql);
                            while ($row = mysqli_fetch_assoc($rs_result)) {
                            extract ($row);

Nu wil ik dus een enkele row uit die tabellen halen, maar ook alle data.
Jawel hoor, Erwins verhaal heeft niets te maken met het feit dat je query niet werkt, er staat namelijk in syntax fout in.
Als je gewoon fatsoenlijke foutafhandeling ingebouwd had ipv van dat afschuwelijke die(), had je dat zelf ook kunnen weten.

Je zet de gehele WHERE clause tussen haakjes, dat is de fout.
Snap ik, heb ook zonder geprobeerd.. werkt ook nie

//werkt niet
$voertuigdetails = "SELECT * FROM voertuigdata_voertuig WHERE hexon_nr = '$_GET[voertuig_nr]'
                            INNER JOIN voertuigdata_details ON voertuigdata_voertuig.hexon_nr = voertuigdata_details.hexon_nr
                            INNER JOIN voertuigdata_spec ON voertuigdata_voertuig.hexon_nr = voertuigdata_spec.hexon_nr
                            INNER JOIN voertuigdata_financieel ON voertuigdata_voertuig.hexon_nr = voertuigdata_financieel.hexon_nr";

$results = mysqli_query($con,$voertuigdetails) or die ("Couldn’t execute query.");
//werkt ook niet
$voertuigdetails = "SELECT * FROM voertuigdata_voertuig 
                            INNER JOIN voertuigdata_details ON voertuigdata_voertuig.hexon_nr = voertuigdata_details.hexon_nr
                            INNER JOIN voertuigdata_spec ON voertuigdata_voertuig.hexon_nr = voertuigdata_spec.hexon_nr
                            INNER JOIN voertuigdata_financieel ON voertuigdata_voertuig.hexon_nr = voertuigdata_financieel.hexon_nr
WHERE hexon_nr = '$_GET[voertuig_nr]'";

$results = mysqli_query($con,$voertuigdetails) or die ("Couldn’t execute query.");

Waarom negeer je mijn opmerking over foutafhandeling inbouwen?
Want als je gewoon de sql error op het scherm print en hier vermeld, kunnen wij ook wat meer zeggen.

En dan krijg je met de aan zekerheid grenzende waarschijnlijk een melding met in de trend van:
Ambiguous column hexon_id in where clause
Die kolom staat nl. in alle vier tabellen en MySQL weet niet dat ze dezelfde waarde hebben in alle tabellen, dus je moet aangeven uit welke tabel die kolom komt(tabelnaam.kolomnaam)

Uitzondering hierop is als je ipv ON .... = ..... USING(hexon_id) zou gebruiken.
Ik vraag alleen maar naar de juiste manier om een join query te bewerkstelligen.
Al die belachelijke voorbeelden die gegeven worden op internet, daar heb ik niks aan, voorgekauwde informatie waarin maar 2 tabellen gebruikt worden.
Ook in de PHP handleiding kan ik geen duidelijke uitleg hierover vinden.
Hoe krijg ik alle kolommen uit 4 tabellen waar in deze 4 tabellen hexon_nr overeenkomt als key.
In elke tabel is een rij met dit nummer, als het in de ene tabel niet bestaat, bestaat het ook niet in een van de andere tabellen.
maar wat is nu het probleem?

Mislukt de query (zo ja: wat is dan de foutmelding van mysql_error()?)

krijg je vreemde of onverwachte resultaten?

"werkt niet" is namelijk een nogal breed begrip met 100 mogelijke oorzaken en ook een heleboel soorten van symptomen. (van geen resultaten tot verkeerde resultaten)
Wim Kasius op 02/01/2014 18:30:27

Ik vraag alleen maar naar de juiste manier om een join query te bewerkstelligen.

En Ger geeft je het best mogelijke advies, waarmee je ongetwijfeld in een paar minuten die query werkend krijgt. Namelijk: bouw correct foutafhandeling in
Als jij dan vervolgens er voor kiest om dat advies gewoon te negeren (je goed recht overigens), dan wordt je helpen direct een stuk lastiger.

Maar goed, verder heeft Ger ook nog eens een fout aangewezen en ook daar doe je niets mee blijkbaar. Tsja.... als je geholpen wil worden is het wel zo netjes om op zijn minst de handreikingen die je krijgt ook uit te proberen.
Probeer deze eens.
En
<?php
// GET veilig maken vooralleer je deze gebruiken gaat.
<?php
$VeiligmakenGet=$_GET['voertuig_nr'];
// Geen gebruik maken van * om alles te selecteren voor de veiligheid.
$voertuigdetails =" SELECT * FROM voertuigdata_voertuig
INNER JOIN voertuigdata_details ON voertuigdata_voertuig.hexon_nr = voertuigdata_details.hexon_nr
INNER JOIN voertuigdata_spec ON voertuigdata_voertuig.hexon_nr = voertuigdata_spec.hexon_nr
INNER JOIN voertuigdata_financieel ON voertuigdata_voertuig.hexon_nr = voertuigdata_financieel.hexon_nr WHERE hexon_nr ='".$VeiligmakenGet."' ";

$results = mysqli_query($con,$voertuigdetails) or die ("Couldn’t execute query.");
?>

Reageren