Hoogste cijfer, met punt
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.
SELECT id, cijfer FROM .... WHERE cijfer=MAX(cijfer)
Gewijzigd op 12/07/2015 19:27:37 door - SanThe -
Gewijzigd op 12/07/2015 19:26:08 door Randy vsf
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 ..)
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.