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]')"
                            ;
Erwin H op 02/01/2014 19:16:10

[quote="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.
[/quote]

Ik negeer het advies echt niet, ik ben alleen nog maar net in php gedoken,en kwam niet tot het gewenste resultaat, en ik vind ook nergens een duidelijk voorbeeld met heldere duidelijke uitleg. Bedankt voor de reacties, ben al weer een stapje verder :)


Toevoeging op 02/01/2014 20:03:21:

Dankje, dit heeft me geholpen, maar t werkt niet..
Ik snap dat het veiliger is om geen * te gebruiken, echter is dan eigenlijk ook het nut van normaliseren verdwenen, en kan je net zo goed alles in een tabel proppen.
Of is een tabel met enkel hexon_nr als inhoud, en op basis daarvan joins maken beter?
Bart Smulders op 02/01/2014 19:21:00

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.");
?>


zet dit eens in je pagina en vertel welke fout je dan krijgt maar allereerst verwijder je" or die ("Couldn’t execute query.")" in je query

<?php
error_reporting(E_ALL);
?>
@Bart
De klok en de klepel?

@Wim
WHERE hexon_nr
Moet zijn
WHERE voertuigdata_voertuig.hexon_nr

Toevoeging op 02/01/2014 22:43:17:

>>Ik snap dat het veiliger is om geen * te gebruiken, echter is dan eigenlijk ook het nut van normaliseren verdwenen, en kan je net zo goed alles in een tabel proppen.
Wat een vreemde redenering!
Bart Smulders op 02/01/2014 21:54:35

zet dit eens in je pagina en vertel welke fout je dan krijgt maar allereerst verwijder je" or die ("Couldn’t execute query.")" in je query

<?php
error_reporting(E_ALL);
?>


Ah is t zo simpel dus?

Ger van Steenderen op 02/01/2014 22:41:23

@Bart
De klok en de klepel?

@Wim
WHERE hexon_nr
Moet zijn
WHERE voertuigdata_voertuig.hexon_nr

Toevoeging op 02/01/2014 22:43:17:

>>Ik snap dat het veiliger is om geen * te gebruiken, echter is dan eigenlijk ook het nut van normaliseren verdwenen, en kan je net zo goed alles in een tabel proppen.
Wat een vreemde redenering!

Ger, wat betreft je reactie op mijn laatste zin, het ligt er natuurlijk wel aan voor welke doeleinden de database word gebruikt. De gegevens in de database komen in dit geval uit een xml bestand wat geautomatiseerd via FTP bij mij op de server komt, dit word door een php script wat ik al heb gemaakt verwerkt. Nu dacht ik dat het handig was om de data te splitsen, toepassingsgewijs, zodat ik snel doormiddel van select * from precies alle data kan laden welke ik nodig heb, zonder deze allemaal apart te hoeven definieeren. Omdat ik immers met select * from dan alle en geen op dat moment onnodige data laad. Zal misschien een foute redenatie zijn, maar dat is dan een les voor de toekomst.
En, dank je, ik ben er uit. Het werkt.
Op zich is er niet heel veel tegen het gebruik van SELECT *, maar er zijn wel voordelen als je het niet doet.
In jouw specifieke geval heb je misschien inderdaad alle kolommen nodig. Zij het, dat je nu natuurlijk een paar keer dubbelop die hexon_nr krijgt. (php gooit de dubbelen wel aan de kant)
En de waarde is toevallig ook steeds gelijk.

Anders is het als je joint met tabellen die gelijknamige kolommen hebben. Bijvoorbeeld "naam" voor een persoon en "naam" voor de groep waartoe hij behoort. Dan is het maar de vraag welk van de 2 je binnenkrijgt.

Ander voordeel: als je in je code er rekening mee houdt dat er een "id" en "documentnaam" uit de query moet komen, dan is het op zich wel prettig als de query al bokt dat er geen kolom "id" is en je niet 85 regels verderop pas er achter komt dat bij het printen van $row['id'] er niets verschijnt, omdat er met select * gewoon een "docid" opgehaald werd.

Daarnaast is het maar zelden dat je van alle tabellen alle kolommen nodig hebt (uitzonderingen zijn er natuurlijk) en het is vaak zonde om al die data uit de database te halen. Van de database server over te dragen aan PHP, alles in een array te plaatsen en er vervolgens niets mee te doen.
Helemaal als je de titels van bijvoorbeeld boeken wilt hebben, is het niet nodig om de inhoud van het hele boek van een paar MB op te halen.


----
Over je eigenlijke probleem:

Je zegt "ah is het zo simpel"
Het was direct duidelijk geweest als je niet "couldn;t execute query" zou printen, maar de foutmelding van mysqli_error().
In dat geval geeft Mysql doorgaans heel duidelijk aan wat er mis is. En als het niet heel duidelijk is, dan toch op z'n minst een goede aanwijzing waar je het moet zoeken.

Reageren