subquery probleem
Gegroet,
Was bezig met een quiz site. Ga je eerst naar pagina "categorieselectie.php", die haalt alle vragen uit een bepaalde categorie op en zet ze in een sessie array. Dan ga je naar een andere pagina die 1 voor 1 de vragen laat zien, en je ze dan uiteraard kan maken. Nu zit het probleem in de laatste pagina: resultaat.php. Ik wil op basis van de array met de vraagnummers (sessie array), de juiste antwoorden selecteren uit de database.
Dit is de database structuur, begrijp dat het beetje discutabel is, maar dat doet er nu even niet toe (al zijn suggesties (als ze mooi geformuleerd zijn) welkom, mocht ik zin hebben in versie 3.0):
vragen
--Vraag_ID
--Vraag
--Categorie
antwoorden
--Vraag_ID
--Antwoord1
--Antwoord2
--Antwoord3
--Antwoord4
juiste_antwoorden
--Vraag_ID
--Juiste_Antwoord
Dit is het stuk code dat ik gebruik om de juiste antwoorden te kiezen. (Had eerst hele andere code, en dit is even wat spontaan gepruts).
Alleen het probleem is, hij geeft aan:
Iemand suggesties......
note: De query is beetje chaos geworden omdat ik uit wanhoop wat dingen door elkaar probeerde..... :$
Was bezig met een quiz site. Ga je eerst naar pagina "categorieselectie.php", die haalt alle vragen uit een bepaalde categorie op en zet ze in een sessie array. Dan ga je naar een andere pagina die 1 voor 1 de vragen laat zien, en je ze dan uiteraard kan maken. Nu zit het probleem in de laatste pagina: resultaat.php. Ik wil op basis van de array met de vraagnummers (sessie array), de juiste antwoorden selecteren uit de database.
Dit is de database structuur, begrijp dat het beetje discutabel is, maar dat doet er nu even niet toe (al zijn suggesties (als ze mooi geformuleerd zijn) welkom, mocht ik zin hebben in versie 3.0):
vragen
--Vraag_ID
--Vraag
--Categorie
antwoorden
--Vraag_ID
--Antwoord1
--Antwoord2
--Antwoord3
--Antwoord4
juiste_antwoorden
--Vraag_ID
--Juiste_Antwoord
Dit is het stuk code dat ik gebruik om de juiste antwoorden te kiezen. (Had eerst hele andere code, en dit is even wat spontaan gepruts).
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$query0 = "SELECT j.Juiste_Antwoord FROM juiste_antwoorden AS j, vragen AS v WHERE j.Vraag_ID = (SELECT v.Vraag_ID FROM vragen AS v WHERE categorie = '".$_SESSION['Categorie']."') AND v.Vraag_ID = j.Vraag_ID ";
$result0 = mysql_query($query0);
if (!$result0){
echo mysql_error(); }
else {
$i = 0;
while ($resultaat = mysql_fetch_assoc($result0)) {
$antwoorden[$i] = $resultaat['Juiste_Antwoord'];
$i++;
}
}
?>
$query0 = "SELECT j.Juiste_Antwoord FROM juiste_antwoorden AS j, vragen AS v WHERE j.Vraag_ID = (SELECT v.Vraag_ID FROM vragen AS v WHERE categorie = '".$_SESSION['Categorie']."') AND v.Vraag_ID = j.Vraag_ID ";
$result0 = mysql_query($query0);
if (!$result0){
echo mysql_error(); }
else {
$i = 0;
while ($resultaat = mysql_fetch_assoc($result0)) {
$antwoorden[$i] = $resultaat['Juiste_Antwoord'];
$i++;
}
}
?>
Alleen het probleem is, hij geeft aan:
Quote:
Subquery returns more than 1 row
Iemand suggesties......
note: De query is beetje chaos geworden omdat ik uit wanhoop wat dingen door elkaar probeerde..... :$
Gewijzigd op 01/01/1970 01:00:00 door Afra ca
Gesponsorde koppelingen:
Je datamodel is al niet ver genoeg genormaliseerd.
antwoorden
--Vraag_id
--Antwoord
That's it. Kun je zoveel antwoorden aanmaken als je wilt.
antwoorden
--Vraag_id
--Antwoord
That's it. Kun je zoveel antwoorden aanmaken als je wilt.
Quote:
Je subquery stuurt meerdere rijen terug, waar er maar 1 nodig was. Dat duidt op de subquery: (SELECT v.Vraag_ID FROM vragen AS v WHERE categorie = '".$_SESSION['Categorie']."') Er zijn dus meerdere vragen met die categorie. Als dat zo moet, zou je i.p.v. de = IN kunnen gebruiken vóór de subquery. Dat betekent dat j.Vraag_ID tussen de resultaten van de subquery zou moeten staan.Subquery returns more than 1 row.
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
Achja, de dagen dat ik meer dan 5 SQL commando's kende liggen helaas al tijdje achter me. (4 periodes van havo5), so don't blame me.
Maar bedankt voor de hulp :)
ps. Jezpur, je stelt dit voor:
antwoorden
--Vraag_id
--Antwoord
Maar hoe zou m'n primary key er dan uitzien? Lijkt mij in eerste instantie dan de combinatie van de 2 velden.......
Maar bedankt voor de hulp :)
ps. Jezpur, je stelt dit voor:
antwoorden
--Vraag_id
--Antwoord
Maar hoe zou m'n primary key er dan uitzien? Lijkt mij in eerste instantie dan de combinatie van de 2 velden.......
Natuurlijk heeft het veld zelf ook een id. Heb je meteen het id van een antwoord, hoef je dat alleen maar in het formulier te verwerken en je kunt zo opslaan waar iemand op gestemd heeft. Datzelfde geldt voor Juiste_Antwoord. Maak daar dan een id van ;-).
Vragen
-- id
-- vraag
-- categorie
Antwoorden
-- id
-- vraag_id
-- antwoord
Ingevoerde_Antwoorden
-- id
-- vraag_id
-- antwoord_id
Juiste_Antwoorden
-- id
-- vraag_id
-- antwoord_id
Et voilà, c'est ça ;-).
Vragen
-- id
-- vraag
-- categorie
Antwoorden
-- id
-- vraag_id
-- antwoord
Ingevoerde_Antwoorden
-- id
-- vraag_id
-- antwoord_id
Juiste_Antwoorden
-- id
-- vraag_id
-- antwoord_id
Et voilà, c'est ça ;-).



