Page 1 sur 1
Probleme de requete sql
Posté : 03 oct. 2006, 14:33
par fabien_14
Bonjour,
J'ai un petit probleme sur une requete que je n'arrive pas a faire.
j'ai 2 table
1ere table qui contient mes 5 regions
-ID
-Nom
2ieme table
Les addrese de site de ces region
-ID
-nom
-ID_region
admettons que sur les 5 region seule la 2 ieme region a des enregistrement de site ... je voudrai pouvoir afficher que le nom de cette region qui a des enresgistrement et pas les autre qui n'ont pas d'enresgitrement ... mais je ni arrive pas ... qlq pourrai t'il m'aider ?
merci
Posté : 03 oct. 2006, 14:47
par fred9999
salut
il faut un requete croisé (j'ai un trou pour le terme exact

)
SELECT region.nom FROM region,site WHERE region.id==site.id_region
essaye ça pour voir
Posté : 03 oct. 2006, 15:05
par @rthur
salut
il faut un requete croisé (j'ai un trou pour le terme exact

)
SELECT region.nom FROM region,site WHERE region.id==site.id_region
essaye ça pour voir
Avec un seul symbole "=" dans la requête SQL

Posté : 03 oct. 2006, 15:10
par fred9999
oh m.... dsl
c'es l'habitude des if($mavariable=='qqchose')

Posté : 04 oct. 2006, 12:34
par fabien_14
Salut !
Humm j'ai du mal !! en faite jai tous renomer et je ni arrive pas !!
Voici ma table avoir :
Code : Tout sélectionner
CREATE TABLE `avoir` (
`id` int(11) NOT NULL auto_increment,
`id_dpt` varchar(30) NOT NULL default '',
`des` text NOT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
et ma table ville :
Code : Tout sélectionner
CREATE TABLE `ville` (
`Commune` varchar(100) NOT NULL default '',
`cp` varchar(6) NOT NULL default '',
`Departement` varchar(50) NOT NULL default '',
`cod` varchar(4) NOT NULL default '',
`id` int(10) NOT NULL auto_increment,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
Alors quand j'ai ma page ou je passe les parametre comme ceci :
index.php?dest=avoir&pays=67&r=4&d=14
Le "d" correspondant au departement Je voudrai afficher les villes de la table "ville" (le champs "cod" correpondant a l'id du departement....) seulement si elle ont au moins 1 enregistrement dans la table "avoir' qui a la corespondance avec le champs "id_dpt".
J'ai essayer ceci mais erreur ..
Code : Tout sélectionner
$rr = "SELECT ville.cod,ville.Commune,avoir.id_dpt FROM ville,avoir WHERE ville.cod==avoir.id_dpt";
while ($c2 =mysql_fetch_array($rr) ){
echo "$c2[Commune]";
}
Merci de votre aide.
Posté : 04 oct. 2006, 13:37
par fred9999
pour le echo il faut mettre ça
echo "$c2['Commune']";
//ou tu peut mettre ça aussi
echo "$c2[1]";
Posté : 04 oct. 2006, 13:49
par fabien_14
bon j'ai reussi a recuperer le nom des ville mais pas optimisé du tous ... arfff
voila la chose
Code : Tout sélectionner
$result1 = mysql_query(" SELECT * FROM avoir WHERE id_region ='$_GET[r]' AND id_dpt='$_GET[d]' ORDER BY id DESC $limit_str");
while ($e3 =mysql_fetch_array ($result1) ){
$result2 = mysql_query(" SELECT Commune FROM ville WHERE id =$e3[id_ville] ");
$c2=mysql_fetch_array($result2);
echo "$c2[Commune]<br>";
}
Quelqu'un pourrai t'il m"aider a l'optimiser ? en requete croisé ? afin que tou tienne sur 1 ligne.
Merci
EDIT autre petit probleme
Si j'ai dans "avoir" 2 enregistrement pour la meme ville ma liste il me met 2 fois le nom de la ville ... exemple :
Par ville :
Le mont st michel
Amigny
Le mont st michel
Comment enlever les doublons ?
Posté : 04 oct. 2006, 14:08
par fred9999
merci pour moi puisque je tente de t'aider
mais pour supprimer les doublon on utilise le distinct.
Regarde sur certains sites pour t'aider dans tes requetes sql
comme l'altruiste par exemple
Posté : 04 oct. 2006, 14:08
par Shrell
$result= mysql_query("SELECT DISTINCT Commune FROM avoir AS a
LEFT JOIN ville AS v ON a.id_ville=v.id
WHERE a.id_region ='$_GET[r]' AND a.id_dpt='$_GET[d]'
ORDER BY a.id DESC $limit_str") or exit(mysql_error());
while($r=mysql_fetch_assoc($result)) {
echo $r['Commune']."<br />";
}
vala vala
Remarque : pour l'optimisation, mieux vaut utiliser SELECT ... FROM a
LEFT JOIN b
ON a.un_champ=b.un_autre_champ que SELECT ... FROM a,b WHERE a.un_champ=b.un_autre_champ
Posté : 04 oct. 2006, 14:18
par fabien_14
Merci fred9999

et Shrell (ta solution marche nikel !!)
Posté : 04 oct. 2006, 14:21
par fred9999
merci à toi de remercier les personnes qui ton aidée sans en oublier aucune.
Va et bonne route pavé de php à toi

Posté : 04 oct. 2006, 14:29
par fabien_14
De rien ! c'est normale de remercier les personnes quand elle nous aide
Et desolé de t'avoir oublié la premier fois

.
Sinon j'ai encore un mini probleme !
comment recuerper l'id de la ville ?
Code : Tout sélectionner
$result1= mysql_query("SELECT DISTINCT Commune FROM avoir AS a
LEFT JOIN ville AS v ON a.id_ville=v.id
WHERE a.id_region ='$_GET[r]' AND a.id_dpt='$_GET[d]' ") or exit(mysql_error());
while($r=mysql_fetch_assoc($result1)) {
echo "<a href=\"$r[id]\">$r[Commune]</a><br />";
}
$r[id_ville]\ Sa ne marche pas
Posté : 04 oct. 2006, 14:34
par Shrell
effectivement, ca ne peut pas marcher : lis ta requete, en l'état actuel des choses tu ne sélectionnes que le champ Commune. Si tu veux aussi l'id_ville, marque le :
"SELECT DISTINCT Commune, id_ville ..."
mais je rejoins fred9999, tu devrais essayer de lire des tutos sur SQL, ca ne pourra que t'aider dans le futur

@+
Posté : 04 oct. 2006, 14:37
par fabien_14
Je mettais Id au lieu de id_ville ... sa marche
En effet je connais bien les base de sql

les join etc ... je connais pas trops , je vais lire les tuto

car sa a l'air bien efficace

.
Merci a vous.