Ga naar inhoud

database query


Aanbevolen berichten

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?
Link naar reactie
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]
Link naar reactie
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>\n"; } echo "</table>"; echo "</td></tr></table>"; }
Link naar reactie
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>\n"; } echo "</table>"; echo "</td></tr></table>"; } [/code:1:51d3dc9415]
Link naar reactie
Het is [code:1:da6a5e3ad6]SELECT * FROM Tabel[/code:1:da6a5e3ad6] of [code:1:da6a5e3ad6]SELECT Kolom1, Kolom2 FROM Tabel[/code:1:da6a5e3ad6] [color=blue:da6a5e3ad6]tip:[/color:da6a5e3ad6] het is beter (lees: sneller) en vaak ook leesbaarder in een editor met highlighting om variabelen en strings te scheiden met een komma als je deze echo-ed, bijv. [code:1:da6a5e3ad6] echo "<tr><td>", $row[0], "</td><td>", $row[1], "</td></tr>";[/code:1:da6a5e3ad6]
Link naar reactie
[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>\n"; } 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
Link naar reactie
[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
Link naar reactie
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>\n"; } echo "</table>"; echo "</td></tr></table>"; } [/code:1:9a3dbb5bd1]
Link naar reactie
Foutje :oops: Bedoelde natuurlijk JOIN :wink: UNION wordt niet ondersteund (versie4 wel)... Daar kijk ik niet echt van op, subselects ook niet (versie 4.1 eindelijk wel), maar zo ontbreekt er nog heel wat aan MySQL. Jammer alleen dat je bij veel hostingbedrijven geen andere keuze hebt, zodat je 'verplicht' bent om er mee te werken, maar dit is een hele andere discussie (waarschijnlijk ook een lange discussie, als ik mij bedenk hoeveel mensen MySQL gebruiken :lol:) -Rémy
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...