Where tussenkrijgen
Ik heb deze regel:
Code (php)
1
2
2
$select = "SELECT vakken.id, ROUND(SUM(cijfers.cijfer * cijfers.weging) / SUM(cijfers.weging),2) AS gemiddeld, vakken.vak FROM cijfers RIGHT JOIN vakken ON vakken.id = cijfers.vak GROUP BY vakken.id ORDER BY vakken.vak ASC";
$query = mysql_query($select);
$query = mysql_query($select);
En ik moet ertussen krijgen, maar het lukt me steeds niet...
Weet iemand misschien hoe?
Wat dacht je van: erachter plakken?
Ik krijg de meldig:
Code (php)
1
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/xxx/domains/xxxxxxx/public_html/xxxxxx/overzicht.php on line 72
Gewijzigd op 01/01/1970 01:00:00 door Nathaniel
Echo de error van de query eens. Daar kan je wat mee.
Nathaniel schreef op 23.05.2009 17:55:
Had dan meteen die foutmelding gegeven, dan is er ook geen twijfel over wat je bedoelt.Als ik die foutmelding zo even zie, zit er in jouw script geen foutafhandeling. Als je dat wel had, zou je namelijk wel een nette error krijgen. Zie hier.
Tip: plak je query in phpMyAdmin om te testen.
"$query = mysql_query($select) or die('FOUT: '.mysql_error());"
En nu krijg ik de foutmelding:
FOUT: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE vakken.user='6001263'' at line 1
6001263 is de "$iddd".
Waarom is dat fout?
Code (php)
1
2
3
4
2
3
4
<?
$select = "SELECT vakken.id, ROUND(SUM(cijfers.cijfer * cijfers.weging) / SUM(cijfers.weging),2) AS gemiddeld, vakken.vak FROM cijfers RIGHT JOIN vakken ON vakken.id = cijfers.vak WHERE user='".$iddd."' GROUP BY vakken.id ORDER BY vakken.vak ASC";
$query = mysql_query($select);
?>
$select = "SELECT vakken.id, ROUND(SUM(cijfers.cijfer * cijfers.weging) / SUM(cijfers.weging),2) AS gemiddeld, vakken.vak FROM cijfers RIGHT JOIN vakken ON vakken.id = cijfers.vak WHERE user='".$iddd."' GROUP BY vakken.id ORDER BY vakken.vak ASC";
$query = mysql_query($select);
?>
lijkt mij dus hetbeste,
Het is dubbelzinnig ofzoiets.
Code (php)
1
2
3
4
5
2
3
4
5
<?
$select = "SELECT vakken.id, ROUND(SUM(cijfers.cijfer * cijfers.weging) / SUM(cijfers.weging),2) AS gemiddeld, vakken.vak FROM cijfers RIGHT JOIN vakken ON vakken.id = cijfers.vak GROUP BY vakken.id WHERE user='$iddd' ORDER BY vakken.vak ASC";
$query = mysql_query($select);
?>
$select = "SELECT vakken.id, ROUND(SUM(cijfers.cijfer * cijfers.weging) / SUM(cijfers.weging),2) AS gemiddeld, vakken.vak FROM cijfers RIGHT JOIN vakken ON vakken.id = cijfers.vak GROUP BY vakken.id WHERE user='$iddd' ORDER BY vakken.vak ASC";
$query = mysql_query($select);
?>
Probeer het is zo?
Code (php)
1
FOUT: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE user='6001263' ORDER BY vakken.vak ASC' at line 1
...
GROUP BY komt volgens mij pas na WHERE in de volgorde.. Of vergis ik me nu?
volgens de handleiding heb je gelijk :)
handig he, zo'n handleiding. Durf ik dingen te beweren zonder dat ik het zelf heb getest :P
handig he, zo'n handleiding. Durf ik dingen te beweren zonder dat ik het zelf heb getest :P
Dus waar moet ik de Where zetten:P?
mis ik hier iets?
edit:
en blijkbaar heb je in beide tabellen de colum user.
je moet ff aangeven welke je wilt gebruiken
edit2:
waarschijnlijk iets als WHERE vakken.user = cijfers.user AND vakken.user = ID
edit 3:
en dan nog iets: volgens mij mag je als dat zo is een extra normalisatie stap zetten.
Gewijzigd op 01/01/1970 01:00:00 door Mathijs -
@nathaniel
variabelen halen we buiten quotes, en id is geen string maar integer, dus zonder de enkele quotes
@ mathijs edit 2:
daar heeft hij dus die right join voor.....
===============
dit wordt het dan ongeveer(?):
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$select =
"SELECT
vakken.id,
ROUND(SUM(cijfers.cijfer * cijfers.weging) / SUM(cijfers.weging),2) AS gemiddeld,
vakken.vak
FROM cijfers
RIGHT JOIN vakken ON vakken.id = cijfers.vak
WHERE user=".$iddd."
GROUP BY vakken.id
ORDER BY vakken.vak ASC";
$query = mysql_query($select);
?>
$select =
"SELECT
vakken.id,
ROUND(SUM(cijfers.cijfer * cijfers.weging) / SUM(cijfers.weging),2) AS gemiddeld,
vakken.vak
FROM cijfers
RIGHT JOIN vakken ON vakken.id = cijfers.vak
WHERE user=".$iddd."
GROUP BY vakken.id
ORDER BY vakken.vak ASC";
$query = mysql_query($select);
?>
Gewijzigd op 01/01/1970 01:00:00 door Afra ca
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
$select =
"SELECT
v.id,
v.vak,
ROUND(SUM(c.cijfer * c.weging) / SUM(c.weging), 2) AS gemiddeld
FROM cijfers AS c
RIGHT JOIN vakken AS v
ON ( v.id = c.vak )
WHERE v.user=" . $iddd . "
ORDER BY v.vak ASC";
$query = mysql_query($select);
if($query)
{
// doen
}
else
{
// query mislukt
}
?>
$select =
"SELECT
v.id,
v.vak,
ROUND(SUM(c.cijfer * c.weging) / SUM(c.weging), 2) AS gemiddeld
FROM cijfers AS c
RIGHT JOIN vakken AS v
ON ( v.id = c.vak )
WHERE v.user=" . $iddd . "
ORDER BY v.vak ASC";
$query = mysql_query($select);
if($query)
{
// doen
}
else
{
// query mislukt
}
?>
De GROUP BY is niet nodig, want er voor ieder persoon maar 1 vak.
Toch?
En je JOIN-relatie klinkt ook totaal niet logisch:
ON ( v.id = c.vak )
Dus cijfers.vak is een ID? Die gelijk is aan vak.id ?