Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/08/2011, 17h55   #1
Invité de passage
 
Homme
Inscription : juillet 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juillet 2011
Messages : 20
Points : 3
Points : 3
Par défaut Double requête SQL

Bonjour,

Je n'arrive pas à effectuer un tri sur une double requête SQL ... je peux répondre un nom de champ qui n'existe il ne me met jms une msg d'erreur c'est très étonnant ..

Voici mon code :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$result = mysql_query("
SELECT *
FROM periodes
WHERE Id_Periode IN
(
 SELECT id_periode
 FROM comporter 
 
 WHERE id_annee = '$annee' 
 ORDER BY num 
)  
 
");
 
 
while ($res = mysql_fetch_array($result)) { 
 
?><a href="encodage.php?annee=<?php echo $valeurannee;?>&periode=<?php echo $res["Id_Periode"]; ?>"><?php echo $res["Nom_Periode"];?></a><br><br><?php 
}?></div><?php
Merci beaucoup

Bonne soirée à tous
simonlaurent5000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 19h46   #2
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 085
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 085
Points : 1 883
Points : 1 883
Bonjour,
Il faut sortir la clause "order by" de la sous-requête.

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 09h00   #3
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 437
Points : 6 437
Le mieux, encore, c'est de se passer complètement de la sous-requête, là où une jointure suffit :
Code :
1
2
3
4
5
SELECT *
FROM periodes p
INNER JOIN comporter c ON p.id_periode = p.id_periode
WHERE id_annee = '$annee' 
ORDER BY num
Et éventuellement remplacer l'étoile par les champs qui vous intéressent.
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 10h45   #4
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 445
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 445
Points : 7 532
Points : 7 532
Avec la jointure, si la table comporter présente plusieurs lignes pour un même id_periode, le résultat sera multiplié d'autant de lignes
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h07.


 
 
 
 
Partenaires

Hébergement Web