Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

database query

Anoniem
Remytje
17 antwoorden
  • ik zit met het volgende probleem.

    een database tabel met rubrieken:
    rubriek_id 1 auto_increment, Primary key rubriek_naam Taal text
    etc….

    rubriek_id 5 rubriek_naam Muziek…etc .

    Tabel met vragen:
    vraag_id int.11 , auto-increment, primary key
    rubriek_id int.11
    vraag. text

    nu wil ik als ik de vragen tabel oproep niet het nummer van de rubriek zien maar uiteraard de naam.

    maar op mijn scherm verschijnt netjes in een tabel:

    Vraag nummer rubriek Vraag

    1 5 Wie geeft mij zangles

    2 8 wie doet mijn tuin…

    hoe pak ik zoiets aan?
  • [quote:a0d52c2d9c="katrien"]hoe pak ik zoiets aan?[/quote:a0d52c2d9c]
    Met een JOIN
  • @Annie: wat is het verschil tussen 'union' en 'join'?

    Ps: als er 'ui' staat dan moet ik even aan m'n Engels werken! :P

    - Bas
  • Met een UNION (en dus inderdaad geen onion ;)) combineer je resultsets tot 1 enkele resultset.
    Simpel gezegd: onder elkaar plakken van meerdere tabellen.

    Met een JOIN (bijv inner, outer, cross) geef je resultaten terug uit 2 of meer tabellen gebaseerd op een relatie tussen deze gegevens.
    Simpel gezegd: naast elkaar zetten van meerdere tabellen

    Wat simpele voorbeeld tabelletjes
    [code:1:6738818770]
    Tabel A: A1 | A2
    ——-
    1 | a
    2 | b
    3 | c
    4 | d

    Tabel B: B1 | B2
    ——-
    1 | x
    2 | y
    3 | z
    [/code:1:6738818770]

    Wat voorbeeld output:
    [code:1:6738818770]
    UNION (ALL) result (kolomnamen uit tabelA worden gebruikt):

    A1 | A2
    ——-
    1 | a
    2 | b
    3 | c
    4 | d
    1 | x
    2 | y
    3 | z

    JOIN result (waarbij relatie op 1e kolom is gelegd; A1=B1):

    A1 | A2 | B1 | B2
    —————–
    1 | a | 1 | x
    2 | b | 2 | y
    3 | c | 3 | z
    [/code:1:6738818770]
  • Aha, thanx! Kort doch duidelijk uitgelegd, daar houd ik van. :D

    - Bas
  • damn ik heb er niet eens wat op aan te merken :x :wink:
  • Dank je wel.. ik ga verder puzzelen.
  • mooi het werkt in de myadmin krijg ik te zien wat ik bedoel, maar bij echo op het scherm geeft foutmelding…..iets doe ik dus nog fout in de fetch_row denk ik:
    $q=mysql_query("SELECT * vraag .vraag rubriek.rubriek_naam FROM vraag, rubriek where vraag.vraag_id=rubriek.rubriek_id LIMIT 0, 30");
    while ($record=mysql_fetch_row($q))
    {
    echo "<tr><td><center>$record[0]</center></td><td><center>$record[1]</center></td><td>$record[2]</td></tr>
    ";
    }
    echo "</table>";
    echo "</td></tr></table>";
    }
  • 1) Zet code tussen blokken
    2) Wat voor foutmelding krijg je?
  • Overigens ziet de query die je hier in je code hebt staan er niet helemaal jofel uit. Foutje bij de copy & paste naar het forum?
  • foutmelding:
    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in c:\phpdev\www\tweede ronde\gilde_site\vraag.php on line 16

    kan inderdaad bij copy/paste wel wat gemist hebben

    [code:1:51d3dc9415]$q=mysql_query("SELECT * vraag .vraag rubriek.rubriek_naam FROM vraag, rubriek where vraag.vraag_id=rubriek.rubriek_id LIMIT 0, 30");
    while ($record=mysql_fetch_row($q))
    {
    echo "<tr><td><center>$record[0]</center></td><td><center>$record[1]</center></td><td>$record[2]</td></tr>
    ";
    }
    echo "</table>";
    echo "</td></tr></table>";
    } [/code:1:51d3dc9415]
  • Het is
    [code:1:da6a5e3ad6]SELECT * FROM Tabel[/code:1:da6a5e3ad6]
    of
    [code:1:da6a5e3ad6]SELECT Kolom1, Kolom2 FROM Tabel[/code:1:da6a5e3ad6]

  • [quote:f6bb93ab6b="InZane"]damn ik heb er niet eens wat op aan te merken :x :wink:[/quote:f6bb93ab6b]misschien nog een kleine tip. Zorg ervoor dat de tabellen die je wilt samenvoegen met UNION over dezelfde kolomen beschikken.

    -R;emy
  • [code:1:9e7aec4f11]$sql = "SELECT vraag.vraag, rubriek.rubriek_naam FROM vraag, rubriek WHERE vraag.vraag_id=rubriek.rubriek_id LIMIT 0, 30;";
    $q = mysql_query($sql);
    while ($record=mysql_fetch_array($q)){
    echo "<tr><td><center>".$record["vraag"]."</center></td><td><center>".$record["rubriek_naam"]."</center></td>
    ";
    }
    echo "</table>";
    echo "</td></tr></table>"; [/code:1:9e7aec4f11]Bovenstaande code zou, hoewel niet getest, moeten werken.

    Vreemd iets: je vraagt maar 2 variabelen op met je query maar probeert 3 variabelen in een tabel te schrijven. Dat lijkt me niet helemaal juist, de gegeven code lijkt me duidelijk genoeg om uit te breiden zodat het gewenste resultaat te krijgen is.

    Succes ermee!

    - Bas
  • [code:1:d7689f50f8]SELECT vraag.vraag, rubriek.rubriek_naam FROM vraag, rubriek WHERE vraag.vraag_id=rubriek.rubriek_id LIMIT 0, 30;[/code:1:d7689f50f8]Deze SQL-string is trouwens fout… want wat heeft vraag_id met rubruik_id te maken? Niets! Waarom worden ze gekoppeld?

    En Annie gaf als tip UNION, waarom wordt dit niet gebruikt? Oké WHERE id=id werkt ook (en de database ziet dit ook als een join) maar een JOIN is veel duidelijker\leesbaarder.

    De correcte SQL-string moet volgens mij als volgt zijn:[code:1:d7689f50f8]SELECT vraag.vraag, rubriek.rubriek_naam FROM vraag INNER JOIN rubriek ON vraag.rubriek_id=rubriek.rubriek_id LIMIT 0, 30;[/code:1:d7689f50f8]en volgens mij mag je in MySQL ook het volgende typen (maar is een tijdje geleden dat ik MySQL gebruikt heb, dus kan het fout hebben):[code:1:d7689f50f8]SELECT vraag.vraag, rubriek.rubriek_naam FROM vraag INNER JOIN rubriek USING rubriek_id LIMIT 0, 30;[/code:1:d7689f50f8]
    -Rémy
  • bedankt voor alle hulp, met combinatie is het gelukt.
    op scherm krijg ik nu een keurige tabel met vraag_id, rubriek_id en vraag
    de query is zo geworden:
    [code:1:9a3dbb5bd1]
    $sql= "SELECT vraag.vraag_id, vraag.vraag, rubriek.rubriek_naam FROM vraag INNER JOIN rubriek ON vraag.rubriek_id=rubriek.rubriek_id LIMIT 0, 30;";
    $q = mysql_query($sql);
    while ($record=mysql_fetch_array($q)){
    echo "<tr><td><center>".$record["vraag_id"]."</center></td><td><center>".$record["rubriek_naam"]."</center></td><td>".$record["vraag"]."</td></tr>
    ";
    }
    echo "</table>";
    echo "</td></tr></table>";
    } [/code:1:9a3dbb5bd1]
  • [quote:3bb8101219="Remytje"]En Annie gaf als tip UNION, waarom wordt dit niet gebruikt?[/quote:3bb8101219]
    Dat lees je dan toch echt fout :D
    Overigens ondersteund MySQL (in de 3 serie tenminste) geen UNION's.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.