Hoogste cijfer, met punt

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ferdi R

Ferdi R

12/07/2015 19:07:09
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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 />';
            }
        }
    }
}

?>
 
PHP hulp

PHP hulp

19/07/2024 17:56:13
 
- SanThe -

- SanThe -

12/07/2015 19:19:35
Quote Anchor link
Ik zie geen ID en ik zie geen Cijfer.
 
Ferdi R

Ferdi R

12/07/2015 19:21:58
Quote Anchor link
$frow['imdbrating'] is de cijfer, die probeer ik nu te sorteren of met max() de hoogste op te halen maar dat lukt mij niet.
 
- SanThe -

- SanThe -

12/07/2015 19:24:45
Quote Anchor link
Dus het zit in een database?

SELECT id, cijfer FROM .... WHERE cijfer=MAX(cijfer)
Gewijzigd op 12/07/2015 19:27:37 door - SanThe -
 
Randy vsf

Randy vsf

12/07/2015 19:25:11
Quote Anchor link
Edit: dacht dat ze gesorteerd moesten worden. Verkeerd gelezen -,-
Gewijzigd op 12/07/2015 19:26:08 door Randy vsf
 
Ferdi R

Ferdi R

12/07/2015 19:34:14
Quote Anchor link
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.
 
- SanThe -

- SanThe -

12/07/2015 19:39:11
Quote Anchor link
SELECT id, cijfer FROM films WHERE cijfer=MAX(cijfer) AND id IN (SELECT id FROM Op_TV WHERE datum_tijd BETWEEN .. AND ..)
 
Ferdi R

Ferdi R

12/07/2015 20:02:30
Quote Anchor link
Bijna, ik had iets anders gevonden.

Dit stukje werkt, hier haal ik de 6 cijfers mee op.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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)."'";

?>


Nu wil ik dus de hoogste cijfer hebben maar dat pakt ie niet.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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)."' AND F.imdbrating = MAX(F.imdbrating) ";

?>
 
Eddy E

Eddy E

12/07/2015 20:37:44
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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    
    "
;

?>


Netjes ingesprongen maakt het leesbaarder.
Onderste 2 regels (dus na de lege regel) zijn extra.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

13/07/2015 15:24:54
Quote Anchor link
Je kan geen aggegrate functie rechtstreeks in de where gebruiken, dit doe je dan via een subquery:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
.....
AND F.imdbrating = (SELECT MAX(fi.imdbrating) FROM Op_Tv o
            JOIN Films fi ON fi.id = o.filmid
            WHERE o.datumtijd BETWEEN $van AND $tot)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.