Hoogste cijfer, met punt
Ik wil de hoogste cijfer ophalen met bij behorende ID.
ID 20789 Cijfer 6.7
ID 25816 Cijfer 4.3
ID 45912 Cijfer 5.8
ID 87231 Cijfer 6.3
ID 11023 Cijfer 7.6
ID 10211 Cijfer 3.2
Ik wil dus cijfer 7.6 ophalen met bij behorende ID
Ik heb max() en sort() gebruikt maar krijg het niet aan het werk.
ID 20789 Cijfer 6.7
ID 25816 Cijfer 4.3
ID 45912 Cijfer 5.8
ID 87231 Cijfer 6.3
ID 11023 Cijfer 7.6
ID 10211 Cijfer 3.2
Ik wil dus cijfer 7.6 ophalen met bij behorende ID
Ik heb max() en sort() gebruikt maar krijg het niet aan het werk.
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
$van = date('Y-m-d 19:30:00', strtotime('+1 day'));
$tot = date('Y-m-d 23:59:00', strtotime('+1 day'));
$s2sql = "SELECT * FROM Op_TV WHERE datum_tijd between '". mysqli_real_escape_string($DBconn, $van)."' AND '". mysqli_real_escape_string($DBconn, $tot)."' ORDER by datum_tijd ASC";
if(!$s2res = mysqli_query($DBconn, $s2sql))
{
trigger_error(mysqli_error().'<br />In query: '.$s2sql);
}
elseif(mysqli_num_rows($s2res) == 0)
{
// Niets gevonden
}
else
{
while($s2row = mysqli_fetch_assoc($s2res))
{
$fsql = "SELECT * FROM Films WHERE id = '". mysqli_real_escape_string($DBconn, $s2row['filmid'])."'";
if(!$fres = mysqli_query($DBconn, $fsql))
{
trigger_error(mysqli_error().'<br />In query: '.$fsql);
}
elseif(mysqli_num_rows($fres) == 0)
{
echo 'f';
}
else
{
$frow = mysqli_fetch_assoc($fres);
// INSERT
//$imdbr = array($frow['imdbrating'].', ');
//$max = max($imdbr);
//echo $max;
sort($frow['imdbrating']);
echo $frow['imdbrating'].'<br />';
if($max == $frow['imdbrating'])
{
echo $frow['imdbrating'].'<br />';
}
}
}
}
?>
$van = date('Y-m-d 19:30:00', strtotime('+1 day'));
$tot = date('Y-m-d 23:59:00', strtotime('+1 day'));
$s2sql = "SELECT * FROM Op_TV WHERE datum_tijd between '". mysqli_real_escape_string($DBconn, $van)."' AND '". mysqli_real_escape_string($DBconn, $tot)."' ORDER by datum_tijd ASC";
if(!$s2res = mysqli_query($DBconn, $s2sql))
{
trigger_error(mysqli_error().'<br />In query: '.$s2sql);
}
elseif(mysqli_num_rows($s2res) == 0)
{
// Niets gevonden
}
else
{
while($s2row = mysqli_fetch_assoc($s2res))
{
$fsql = "SELECT * FROM Films WHERE id = '". mysqli_real_escape_string($DBconn, $s2row['filmid'])."'";
if(!$fres = mysqli_query($DBconn, $fsql))
{
trigger_error(mysqli_error().'<br />In query: '.$fsql);
}
elseif(mysqli_num_rows($fres) == 0)
{
echo 'f';
}
else
{
$frow = mysqli_fetch_assoc($fres);
// INSERT
//$imdbr = array($frow['imdbrating'].', ');
//$max = max($imdbr);
//echo $max;
sort($frow['imdbrating']);
echo $frow['imdbrating'].'<br />';
if($max == $frow['imdbrating'])
{
echo $frow['imdbrating'].'<br />';
}
}
}
}
?>
Ik zie geen ID en ik zie geen Cijfer.
$frow['imdbrating'] is de cijfer, die probeer ik nu te sorteren of met max() de hoogste op te halen maar dat lukt mij niet.
Dus het zit in een database?
SELECT id, cijfer FROM .... WHERE cijfer=MAX(cijfer)
SELECT id, cijfer FROM .... WHERE cijfer=MAX(cijfer)
Gewijzigd op 12/07/2015 19:27:37 door - SanThe -
Edit: dacht dat ze gesorteerd moesten worden. Verkeerd gelezen -,-
Gewijzigd op 12/07/2015 19:26:08 door Randy vsf
Ik kan de hoogste cijfer niet via de 2de query ophalen omdat die 6 keer draait. Deze staat namelijk in de while van de eerste query.
In de eerste query haal ik de films op die tussen een bepaalde tijd draaien, bijvoorbeeld 6 films. Dus de 2de query wordt 6 keer aangeroepen en haal ik dus 6 keer de hoogste cijfer op.
In de eerste query haal ik de films op die tussen een bepaalde tijd draaien, bijvoorbeeld 6 films. Dus de 2de query wordt 6 keer aangeroepen en haal ik dus 6 keer de hoogste cijfer op.
SELECT id, cijfer FROM films WHERE cijfer=MAX(cijfer) AND id IN (SELECT id FROM Op_TV WHERE datum_tijd BETWEEN .. AND ..)
Bijna, ik had iets anders gevonden.
Dit stukje werkt, hier haal ik de 6 cijfers mee op.
Nu wil ik dus de hoogste cijfer hebben maar dat pakt ie niet.
Dit stukje werkt, hier haal ik de 6 cijfers mee op.
Code (php)
1
2
3
4
2
3
4
<?php
$s2sql = "SELECT * FROM Op_TV T JOIN Films F ON F.id = T.filmid WHERE T.datum_tijd between '". mysqli_real_escape_string($DBconn, $van)."' AND '". mysqli_real_escape_string($DBconn, $tot)."'";
?>
$s2sql = "SELECT * FROM Op_TV T JOIN Films F ON F.id = T.filmid WHERE T.datum_tijd between '". mysqli_real_escape_string($DBconn, $van)."' AND '". mysqli_real_escape_string($DBconn, $tot)."'";
?>
Nu wil ik dus de hoogste cijfer hebben maar dat pakt ie niet.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$s2sql = "
SELECT *
FROM Op_TV T
JOIN Films F
ON F.id = T.filmid
WHERE T.datum_tijd between '". mysqli_real_escape_string($DBconn, $van)."'
AND '". mysqli_real_escape_string($DBconn, $tot)."'
AND F.imdbrating = MAX(F.imdbrating)
ORDER BY imdbrating DESC
LIMIT 0, 1
";
?>
$s2sql = "
SELECT *
FROM Op_TV T
JOIN Films F
ON F.id = T.filmid
WHERE T.datum_tijd between '". mysqli_real_escape_string($DBconn, $van)."'
AND '". mysqli_real_escape_string($DBconn, $tot)."'
AND F.imdbrating = MAX(F.imdbrating)
ORDER BY imdbrating DESC
LIMIT 0, 1
";
?>
Netjes ingesprongen maakt het leesbaarder.
Onderste 2 regels (dus na de lege regel) zijn extra.
Je kan geen aggegrate functie rechtstreeks in de where gebruiken, dit doe je dan via een subquery:




