difficulté sur une requete Mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : difficulté sur une requete Mysql

Re: difficulté sur une requete Mysql

par murdok » 18 sept. 2009, 15:42

ca marche c'est bien noté merci encore!

Re: difficulté sur une requete Mysql

par ouckileou » 18 sept. 2009, 15:26

Oui, par défaut c'est ASC. Pense à aller regarder la documentation, les réponses à tes questions et des explications sur le fonctionnement y sont : http://dev.mysql.com/doc/refman/5.4/en/select.html

D'abord la doc, ensuite le forum si on a pas compris ou que ça marche pas ;)

Re: difficulté sur une requete Mysql

par murdok » 18 sept. 2009, 15:13

oui! et ca marche nickel mais je voulais savoir si pour chaque élement qu'on souhaite trier on pouvait mettre ASC ou DESC tout de suite derrière

Re: difficulté sur une requete Mysql

par ouckileou » 18 sept. 2009, 15:10

Je ne sais pas, là tu auras les albums triés du plus récent au plus ancien, est-ce que c'est ce que tu veux ?

Re: difficulté sur une requete Mysql

par murdok » 18 sept. 2009, 14:50

merci pour tout!
la ou j'ai placer le DESC c'est bien correct?

Re: difficulté sur une requete Mysql

par ouckileou » 18 sept. 2009, 12:07

C'est ce que j'aurais mis oui, il n'y a plus qu'à tester :)

Re: difficulté sur une requete Mysql

par murdok » 18 sept. 2009, 11:46

Super merci beaucoup pour l'explication , c'est tout simple mais je n'avais pas saisi la logique des multicritères de tri.
je crois que la c'est tout bon j'ai mis ca en requete:
SELECT *
FROM albums INNER JOIN tracks ON albums.albums_id=tracks.tracks_albums_id
ORDER BY albums.albums_date DESC, albums.albums_name, tracks.tracks_name

Re: difficulté sur une requete Mysql

par ouckileou » 18 sept. 2009, 11:31

Oui tu ne dois pas avoir de changement, la requête que je t'ai donnée fait normalement la même chose, mais de la façon la plus simple et la plus "naturelle".

Oublie PHP pour l'instant. Ouvre phpMyAdmin, ou un autre truc pour manipuler ta base, et teste ta requête dedans. Quand elle sera bonne, tu l'intégreras dans ton code.

Tu dis que tes résultats sont triés par nom d'album, et non par date, mais regarde :
SELECT *
FROM albums
INNER JOIN tracks ON albums.albums_id=tracks.tracks_albums_id
ORDER BY albums.albums_name,  # tu tries les albums par ordre alphabétique sur leur nom
 tracks.tracks_name,  # pour les lignes qui ont le même nom d'album, tu les tries par nom de chanson
albums.albums_date   # et ensuite, pour les lignes même nom d'album/même nom de chanson (c'est à dire probablement aucune ligne), tu tries par date.
Il faut que tu revoies tes critères de tri, ta requête fonctionne parfaitement et fait ce que tu lui demandes. Mais tu ne lui demandes pas de faire ce que tu veux :)

Re: difficulté sur une requete Mysql

par murdok » 18 sept. 2009, 11:21

merci beaucoup du retour, cependant je n'ai pas de changement dans mon resultat, je pense c'est du à un "simulated nested repeat"qui fait une vérification sur le nom de l'album.
voici mon code php
  <?php 
   $i=0;
   $j=0;
   do { ?> 

    <?php 
		     
	  
		  $TFM_nest = $row_Recordset_disco['albums_name'];
	
		  if ($lastTFM_nest != $TFM_nest) { 
		  ////// boucle pour un nouvel album
		  ?></td></tr></table> <?php 
		  $i=0;
		  $j=0;
		  $i++;
	      $lastTFM_nest = $TFM_nest;  ?>
          <BR />
  <table border="1" width="650" bgcolor="#f1c86e" cellpadding="6" bordercolor="#bc6927">  
    	<tr>
   		  <td width="200" valign="top">
    		<p><?php echo $row_Recordset_disco['albums_name']; ?> <BR>
			<em>(<?php echo $row_Recordset_disco['albums_label']; ?> - <?php echo DateMysqltoFr($row_Recordset_disco['albums_date']); ?>)</em></p>
    		<img border="0" src="<?php echo $objDynamicThumb1->Execute(); ?>" /> </td>     
     		<?php } ///////fin de boucle   
	  $j++; 
	  if ($j==1) { ?><td valign="top" > <?php } ?>
    <p><?php echo $row_Recordset_disco['tracks_name']; ?> <a href="admin/module_sound/sound/<?php echo $row_Recordset_disco['tracks_albums_id']; ?>/<?php echo $row_Recordset_disco['tracks_upload_file']; ?>">MP3</a> </p>


    <?php } while ($row_Recordset_disco = mysql_fetch_assoc($Recordset_disco)); ?>

Re: difficulté sur une requete Mysql

par ouckileou » 18 sept. 2009, 10:23

Ben oui tu tries d'abord par nom d'album, ensuite par nom de chanson et enfin par date. L'ordre d'arrivée correspond à ce que tu fais dans ta requête, c'est tout.

De plus, je trouve ta requête assez bizarre, pourquoi passer par une sous requête avec une jointure externe plutôt que par une simple jointure ?!
SELECT * 
FROM albums
INNER JOIN tracks ON albums.albums_id=tracks.tracks_albums_id
ORDER BY albums.albums_name, tracks.tracks_name, albums.albums_date
A priori tous les albums comportent des chansons, pas besoin de LEFT OUTER JOIN :)

difficulté sur une requete Mysql

par murdok » 17 sept. 2009, 17:55

Bonjour à tous,

j'éprouve une difficulté sur une requete Mysql.
Cette requete permet d'afficher la discographie d'un groupe, j'affiche donc ainsi le nom de l'album et les noms des morceaux qui corresponde à cette album.
le regroupement se fait bien mais c'est l'ordre d'arrivée des albums qui n'ai pas par date (albums.albums_date) mais par non d'album.

voici le code :
SELECT albums.*, tracks.* FROM (tracks LEFT JOIN albums ON albums.albums_id=tracks.tracks_albums_id) ORDER BY albums.albums_name, tracks.tracks_name, albums.albums_date
merci à tous.