Soucis sur une requête sql.
17 messages
• Page 1 sur 2 • 1, 2
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Soucis sur une requête sql.
Bonsoir,
J'ai une petit soucis sur une requête que je ne parviens pas à régler.
Supposons une table nommé "localisation" composé entre autre d'un champ "departement". Le champs "departement" comporte plusieurs fois le même département.
id___departement
1__vendee
2__loire_atlantique
3__vendee
4__loire_atlantique
Quand je fais ma requête, j'ai forcement tout qui s'affiche alors que je voudrais afficher qu'une seule fois un département même si il est présent plusieurs fois dans la table.
Est ce possible ? Comment faire ?
Merci
J'ai une petit soucis sur une requête que je ne parviens pas à régler.
Supposons une table nommé "localisation" composé entre autre d'un champ "departement". Le champs "departement" comporte plusieurs fois le même département.
id___departement
1__vendee
2__loire_atlantique
3__vendee
4__loire_atlantique
Quand je fais ma requête, j'ai forcement tout qui s'affiche alors que je voudrais afficher qu'une seule fois un département même si il est présent plusieurs fois dans la table.
Est ce possible ? Comment faire ?
Merci
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Merci YoyoS, je ne connaissais pas
.
J'ai essayé avec DISTINCT mais sans succès ... je dois mal m'y prendre à mon avis.
Ma requête:
J'ai essayé :
Et
La requête m'affiche 2 fois le même département ..?
Merci
J'ai essayé avec DISTINCT mais sans succès ... je dois mal m'y prendre à mon avis.
Ma requête:
- Code: Tout sélectionner
<?php
include("data_bd.php");
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir
correctement remplit les données du fichier data_bd.php.');
//on selectionne l'id et la situation
$query1 = mysql_query("SELECT id, situation FROM TYPE_DE_LOCATION WHERE situation = 'bord_de_mer' ORDER BY Times DESC");
$monid="";
$la_situation="";
while($location = mysql_fetch_array($query1))
{
$monid = $location['id'];
$monid.="$id";
$la_situation = $location['situation'];
$la_situation.="$situation";
//on ne ferme pas la boucle pour selectionner les departements
//les id retournés affichent uniquement la situation bord_de_mer
$query2 = mysql_query("SELECT departement FROM LOCALISATION WHERE id = $monid");
$le_departement="";
while($localisation = mysql_fetch_array($query2))
{
$le_departement = $localisation['departement'];
$le_departement.="$departement";
echo ''.$le_departement.'<br/>';
}
}
?>
J'ai essayé :
- Code: Tout sélectionner
$query2 = mysql_query("SELECT DISTINCT departement FROM LOCALISATION WHERE id = $monid");
Et
- Code: Tout sélectionner
$query2 = mysql_query("SELECT DISTINCT (departement) FROM LOCALISATION WHERE id = $monid");
La requête m'affiche 2 fois le même département ..?
Merci
-

YoyoS - WRInaute accro

- Messages: 3835
- Inscription: 14 Sep 2006
Bizarre, c'est forcément que tes départements ne sont pas identiques alors. Il n'y a pas un espace dans l'un qu'il n'y aurait pas dans l'autre, ou un truc du genre ?
Faut pas oublier qu'il y a une boucle, il passe peut-être 2 x et affiche donc 2x l'unique département ^^
Faut pas oublier qu'il y a une boucle, il passe peut-être 2 x et affiche donc 2x l'unique département ^^
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Je viens de vérifier sous mysql, les 2 champs affichés sont identiques, sans espaces ni quoi que se soit d'autre.
Dans la requête je fais:
J'ai ajouté en fin de requête:
Et sa me retourne:
9-bord_de_mer-Loire_Atlantique
5-bord_de_mer-Loire_Atlantique
Les id sont bien différents et pourtant le même département s'affiche 2 fois .. pige pas la ?
Une suggestion ..?
Merci
Edit
Si je fais directement sous mysql:
sa fonctionne ... j'en déduit que sa coince dans mon code..
Dans la requête je fais:
- Code: Tout sélectionner
$query2 = mysql_query("SELECT DISTINCT departement FROM LOCALISATION WHERE id = $monid");
J'ai ajouté en fin de requête:
- Code: Tout sélectionner
echo ''.$monid.'-'.$la_situation.'-'.$le_departement.'<br/>';
Et sa me retourne:
9-bord_de_mer-Loire_Atlantique
5-bord_de_mer-Loire_Atlantique
Les id sont bien différents et pourtant le même département s'affiche 2 fois .. pige pas la ?
Une suggestion ..?
Merci
Edit
Si je fais directement sous mysql:
- Code: Tout sélectionner
SELECT DISTINCT departement FROM `LOCALISATION`
sa fonctionne ... j'en déduit que sa coince dans mon code..
-

YoyoS - WRInaute accro

- Messages: 3835
- Inscription: 14 Sep 2006
C'est parce qu'avec ça, il fait 2 tours de boucle, il faut t'arranger pour qu'il n'en fasse qu'un:
- Code: Tout sélectionner
$query1 = mysql_query("SELECT id, situation FROM TYPE_DE_LOCATION WHERE situation = 'bord_de_mer' ORDER BY Times DESC");
$monid="";
$la_situation="";
while($location = mysql_fetch_array($query1))
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Je ne comprend pas! Mes infos sont dans 2 bases différentes. Ma 1ere requête me permet de sélectionner les id qui correspondent à la situation 'bord_de_mer'. La seconde sélectionne les départements en fonction des id de la 1er boucle , et je ne vois vraiment pas comment faire autrement si ce n'est que de modifier entièrement ma base et la vingtaines de fichier codés derrières ...
.
-

YoyoS - WRInaute accro

- Messages: 3835
- Inscription: 14 Sep 2006
Un indice, rassembler le tout en une requête ^^
- Code: Tout sélectionner
SELECT L.departement, T.situation FROM TYPE_DE_LOCATION T, LOCALISATION L WHERE T.id = L.Id AND T.situation = 'bord_de_mer' ORDER BY T.Times DESC
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
La nuit est passé et me revoilà ... hoooo nonnnn ^^.
J'ai essayé ta requête et je l'ai adopté
, grand merci. Par contre j'y comprend toujours rien ^^.
Je ne pige pas les T et les L ... ce sont des lettres au pif ?
Je vais me renseigner sur les (jointure), j'en ai entendu parlé mais je m'y suis jamais intéressé.
J'ai essayé ta requête et je l'ai adopté
Je ne pige pas les T et les L ... ce sont des lettres au pif ?
Je vais me renseigner sur les (jointure), j'en ai entendu parlé mais je m'y suis jamais intéressé.
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Donc:
équivaut à
ou à
ou ni l'un ni l'autre?
Je vais abuser mais je ne m'en sort pas sur une autre requête au niveau des jointures. La requête est celle ci:
Merci
- Code: Tout sélectionner
SELECT L.departement, T.situation FROM TYPE_DE_LOCATION T, LOCALISATION L WHERE T.id = L.Id AND T.situation = 'bord_de_mer' ORDER BY T.Times DESC
équivaut à
- Code: Tout sélectionner
SELECT L.departement, T.situation FROM TYPE_DE_LOCATION situation, LOCALISATION departement WHERE situation.id = departement.Id AND situation.situation = 'bord_de_mer' ORDER BY situation.Times DESC
ou à
- Code: Tout sélectionner
SELECT LOCALISATION.departement, TYPE_DE_LOCATION.situation FROM TYPE_DE_LOCATION T, LOCALISATION L WHERE TYPE_DE_LOCATION.id = LOCALISATION.Id AND TYPE_DE_LOCATION.situation = 'bord_de_mer' ORDER BY TYPE_DE_LOCATION.Times DESC
ou ni l'un ni l'autre?
Je vais abuser mais je ne m'en sort pas sur une autre requête au niveau des jointures. La requête est celle ci:
- Code: Tout sélectionner
<?php
$le_departement=$_GET["departement"];
include("data_bd.php");
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données du fichier data_bd.php.');
//on selectionne tout les départements par apport au departement transmit par $_GET
//on fait le trie dans la seconde requête en fonction de la situation
$query2 = mysql_query("SELECT id, region, ville FROM LOCALISATION WHERE departement = '".$le_departement."' ORDER BY Timestamp DESC");
$lid_en_cour="";
$la_region="";
$la_ville="";
while($localisation = mysql_fetch_array($query2))
{
$lid_en_cour = $localisation['id'];
$lid_en_cour.="$id";
$la_region = $localisation['region'];
$la_region.="$region";
$la_ville = $localisation['ville'];
$la_ville.="$ville";
//on ne ferme pas la boucle
//on selectionne le type de location en fonction des id de la 1ere boucle
$query1 = mysql_query("SELECT type_de_location, nombre_de_personne FROM TYPE_DE_LOCATION WHERE id = $lid_en_cour AND situation = 'bord_de_mer' ORDER BY Times DESC");
$le_type_de_location="";
$le_nombre_de_personne="";
while($location = mysql_fetch_array($query1))
{
$le_type_de_location = $location['type_de_location'];
$le_type_de_location.="$type_de_location";
$le_nombre_de_personne = $location['nombre_de_personne'];
$le_nombre_de_personne.="$nombre_de_personne";
}
}
?>
Merci
-

YoyoS - WRInaute accro

- Messages: 3835
- Inscription: 14 Sep 2006
ni l'un ni l'autre. Un alias c'est juste un diminutif c'est tout, te prend pas la tête !
Essaie de comprendre ce que fait la première requête avec jointure que je t'ai fait, après tu sauras faire les suivantes, ça nous évitera de toute te les faire
Essaie de comprendre ce que fait la première requête avec jointure que je t'ai fait, après tu sauras faire les suivantes, ça nous évitera de toute te les faire
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Mais heuuuu, je veux pas que l'on me fasse tout, je veux juste comprendre comment sa marche et ou est la logique ^^.
Ceci dit, je me suis trouvé une logique mais je ne suis pas certain que se soit la meilleurs ...
Bon après quelques touffes de cheveux en moins, j'ai pondus sa:
..et sa marche sur mes différents testes
Ceci fait, je veux juste savoir si ma requête te semble correcte (code en trop,mal faite ...) ou je ne sais quoi d'autre sans le faire à ma place, juste m'aiguiller, stp .
Et pour finir, peut on faire également une jointure sur 3 tables en même temps ?
Merci
Ceci dit, je me suis trouvé une logique mais je ne suis pas certain que se soit la meilleurs ...
Bon après quelques touffes de cheveux en moins, j'ai pondus sa:
- Code: Tout sélectionner
$query2 = mysql_query("SELECT T.id, T.type_de_location, T.nombre_de_personne, L.region, L.ville FROM LOCALISATION L,
TYPE_DE_LOCATION T WHERE L.id = T.Id AND T.situation = 'bord_de_mer' AND departement = '$le_departement' ORDER BY L.Times DESC");
..et sa marche sur mes différents testes
Ceci fait, je veux juste savoir si ma requête te semble correcte (code en trop,mal faite ...) ou je ne sais quoi d'autre sans le faire à ma place, juste m'aiguiller, stp .
Et pour finir, peut on faire également une jointure sur 3 tables en même temps ?
Merci
17 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Google API : guide de développement de l'API Google - 20-09-2002
- AdSense Tracking : statistiques détaillées sur les clics AdSense - 29-02-2004
- Nombre moyen de mots par requête : statistiques AOL Août 2006 - 10-08-2006
- Nombre de clics dans les pages de résultats : statistiques AOL Août 2006 - 11-08-2006
- Google met à jour sa recherche locale - 15-09-2004
- Informations sur l'infrastructure technique de Google - 01-11-2004
- Google indexe le Flash - 28-04-2004
- Bingbot : le nom officiel du robot de Bing - 29-06-2010
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
