Toon posts:

[PHP]Sorteren van optel prijsafspraken maar dan op volgorde

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Graag zou ik de prijsafspraken op volgorde van relatie_id willen. Maar op dit moment krijg ik alles door elkaar, zie onderstaand. Kortom hoe krijg ik voor elkaar dat hij relatie_id wel sorteert nadat hij de prijsafspraken heeft opgeteld.

Dank je.

PHP:
1
2
3
4
5
6
7
8
9
10
11
    db_connect();
    $query = mysql_query("SELECT DISTINCT(relatie_id) FROM prijsafspraken ORDER BY relatie_id ASC");
    $aantal_resultaten = mysql_numrows($query);
    if ($aantal_resultaten == '0') echo "Wij hebben geen resultaten gevonden, probeer opnieuw.";
    elseif ($aantal_resultaten == '1') echo "Wij hebben voor u één resultaat gevonden.";
    else echo "Wij hebben voor u $aantal_resultaten resultaten gevonden.";
    echo "<P>";
    while($result = mysql_fetch_array($query)) {
    $relatie_id = $result['relatie_id'];
    $query_afspraken = mysql_query("SELECT * from prijsafspraken WHERE relatie_id = '$relatie_id'");
    $aantal_afspraken = mysql_numrows($query_afspraken);



OUTPUT =

Bedrijf Aantal Prijsafspraken
Van XXXXXXXXXXX 3
De XXXXXXXXXXXX 122
UniXXXXXXXXXXXX 121

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:46

gorgi_19

Kruimeltjes zijn weer op :9

Waarom doe je niet een COUNT icm Group BY, en order je op deze COUNT? :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
PHP:
1
    $query = mysql_query("SELECT COUNT(relatie_id) FROM prijsafspraken ORDER BY relatie_id ASC");


Werkt helaas niet krijg ik 0 resultaten.

  • HuMon
  • Registratie: Augustus 2004
  • Laatst online: 02-11 08:59
Moet je bij de tweede query geen ORDER BY doen?

$query_afspraken = mysql_query("SELECT * from prijsafspraken WHERE relatie_id = '$relatie_id ORDER BY relatie_id'");

Verwijderd

Topicstarter
Werkt ook niet

  • RSpliet
  • Registratie: Juni 2003
  • Laatst online: 08-09 21:45

RSpliet

*blink*

PHP:
1
2
$query_afspraken = mysql_query("SELECT * from prijsafspraken WHERE relatie_id = '$relatie_id'"); 
$aantal_afspraken = mysql_numrows($query_afspraken);


Sowieso zal onderstaande sneller werken:
PHP:
1
2
3
$query_afspraken = mysql_query("SELECT count(*) AS count from prijsafspraken WHERE relatie_id = '$relatie_id'"); 
$aantal_afspraken = mysql_fetch_array($query_afspraken,MYSQL_ASSOC);
$aantal_afspraken = $aantal_afspraken['count'];

Waarom? Dan hoeft niet ALLE data tussen de PHP client en de MySQL server worden rondgepompt, in plaats daarvan telt MySQL ze, en geeft 1 klein nummertje terug :).

Nu de query zelf
$query = mysql_query("SELECT DISTINCT(relatie_id) AS relatie_id FROM prijsafspraken ORDER BY relatie_id ASC");
zou kunnen werken, durf ik je niet met zekerheid te zeggen (of te testen :p)

[ Voor 19% gewijzigd door RSpliet op 21-11-2004 19:26 ]

Schaadt het niet, dan baat het niet


Verwijderd

Topicstarter
Het werkt nu inderdaad sneller, alleen sorteren werkt nog niet. Maar we komen er wel.

Verwijderd

Topicstarter
Het is niet de relatie_id welke het script moet sorteren maar bedrijf uit tabel relaties. Alleen onderstaande code geeft een enorme vertraging of loop? Wat doe ik fout?


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
    db_connect();
    $query = mysql_query("SELECT DISTINCT(p.relatie_id) AS relatie_id, r.bedrijf FROM prijsafspraken p, relaties r ORDER BY r.bedrijf DESC");
    $aantal_resultaten = mysql_numrows($query);
    if ($aantal_resultaten == '0') echo "Wij hebben geen resultaten gevonden, probeer opnieuw.";
    elseif ($aantal_resultaten == '1') echo "Wij hebben voor u één resultaat gevonden.";
    else echo "Wij hebben voor u $aantal_resultaten resultaten gevonden.";
    echo "<P>";
    while($result = mysql_fetch_array($query)) {
    $relatie_id = $result['relatie_id'];
    $query_afspraken = mysql_query("SELECT count(*) AS count from prijsafspraken WHERE relatie_id = '$relatie_id' ORDER BY relatie_id ASC");  
    $aantal_afspraken = mysql_fetch_array($query_afspraken,MYSQL_ASSOC); 
    $aantal_afspraken = $aantal_afspraken['count']; 
    ?>

Verwijderd

Topicstarter
Soms is het complexer dan je denkt! Voor de liefhebbers de oplossing:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
    db_connect();
    // Eerst bedrijven op naam sorteren
    $query_relatie = mysql_query("SELECT * FROM relaties ORDER BY bedrijf ASC");
    
    //$query = mysql_query("SELECT DISTINCT(relatie_id) AS relatie_id FROM prijsafspraken ORDER BY relatie_id ASC"); 
    
    while($result_relatie = mysql_fetch_array($query_relatie)) {
    $relatie_id = $result_relatie['id'];
    $bedrijf = $result_relatie['bedrijf'];
    $query_afspraken = mysql_query("SELECT count(*) AS count from prijsafspraken WHERE relatie_id = '$relatie_id'");  
    $aantal_afspraken = mysql_fetch_array($query_afspraken,MYSQL_ASSOC); 
    $aantal_afspraken = $aantal_afspraken['count']; 
    ?>


Allen bedankt voor jullie bijdrage.
Pagina: 1