Hallo allemaal :),

Ik heb in mijn database 'postcode' meerder tabellen en deze worden aan elkaar gekoppeld. Althans dat moet gebeuren want het lukt me niet:p Wel heb ik wat zitten rommelen en misschien kan het veel beter. Ik had hiervoor alles in een db zitten, alleen dat duurt het langer, deze oplossing moet sneller werken.

script:

<?php
//Connect to MySQL Server
mysql_connect($dbhost, $dbuser, $dbpass);
//Select Database
mysql_select_db($dbname) or die(mysql_error());
// Retrieve data from Query String

// select fields form different tabels
$sql = "SELECT t1.straat, t1.plaats, t2.id, t2.straat, t3.id, t3.woonplaats FROM postcode AS t1, straat AS t2, woonplaats AS t3 WHERE t1.postcode = '". $_GET['postcode'] ."'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);

// echo results
echo "postcode: " . $row['postcode'] . "<br />";
echo "straat" . $row['straat'] . "<br />";
echo "plaats" . $row['plaats'] . "<br />";
echo "provincie" . $row['provincie'] . "<br />";
?>


database:

* db postcode*

- postcode (tabel)

- postcode
- straat
- plaats
- provincie

- straat (tabel)
- id
- straat

- plaats (tabel)
- id
-plaats

- provincie (tabel)
- id
- provincie

Werking:

Misschien nog even toe lichten in tabel 'postcode' is straat het id van tabel 'straat' etc...

<?php
    $sql = "
        SELECT p.postcode, s.straat, p.plaats, pr.provincie
        FROM postcode AS p, straat AS s, plaats AS p, provincie AS pr
        WHERE
            p.straat = s.id
        AND
            p.plaats = p.id
        AND
            p.provincie = pr.id
        ";
?>

Zo koppel je in ieder geval je tabellen. Als je specifieke records wilt selecteren, moet je je WHERE condition nog verder uitbreiden.
dank je voor je reactie! In zo verre heb ik momenteel dit, kan ik de straat niet weergeven. Wat kan ik het beste doen?

$sql = "SELECT t1.postcode, t1.straat, t2.id, t2.straat FROM postcode AS t1, straat AS t2 WHERE t1.postcode = '3555TB'";

$res = mysql_query($sql) or die (mysql_error());

echo $res['t1.straat'];

En is het sneller om JOIN te gebruiken?
mod-edit:

Bumpen
Twee of meer keer achter elkaar in je eigen topic posten heet bumpen. Omdat het opdringerig overkomt is bumpen pas na 24 uur toegestaan. Bumpen kan een reden zijn voor de admins en mods om een topic te sluiten. Gebruik het knopje om je tekst aan te passen indien nodig.

Johan van Wilsum schreef op 28.05.2007 19:51
dank je voor je reactie! In zo verre heb ik momenteel dit, kan ik de straat niet weergeven. Wat kan ik het beste doen?

$sql = "SELECT t1.postcode, t1.straat, t2.id, t2.straat FROM postcode AS t1, straat AS t2 WHERE t1.postcode = '3555TB'";

$res = mysql_query($sql) or die (mysql_error());

echo $res['t1.straat'];


Tips:

1) schrijf je query's netjes uit, met inspringen. Dat debugt gemakkelijker.
2) verzin betere aliassen dan t1, t2
3)

<?php
    $sql = "
        SELECT p.postcode, s.straat
        FROM
            postcode AS p, straat AS s
        WHERE p.postcode = '3555TB'
        AND p.straat = s.id";
?>
Tanks, ik zal het edit knop je gebruiken.

Het volgende werk, maar zodra ik de plaats erbij wil gaan doen gaat het mis. Het volgende het ik gedaan

<?php
$sql = "
SELECT p.postcode,p.plaats, s.straat
FROM
postcode AS p, straat AS s, plaats AS w
WHERE p.postcode = '3555TB'
AND p.straat = s.id
AND p.plaats = w.id
LIMIT 0,1";
?>
Wat kan ik doen?
SELECT
p.postcode,
w.plaats,
s.straat
FROM
postcode AS p,
straat AS s,
plaats AS w
WHERE
p.postcode = '3555TB'
AND
p.straat = s.id
AND
p.plaats = w.id

zoiets?
Het werkt nu wel maar het is zo zwaar of zo traag dat mijn server steed chrased :(

Reageren