Probleme de requete sql

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 : Probleme de requete sql

par fabien_14 » 04 oct. 2006, 14:37

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.

par Shrell » 04 oct. 2006, 14:34

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 ;)
@+

par fabien_14 » 04 oct. 2006, 14:29

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

par fred9999 » 04 oct. 2006, 14:21

merci à toi de remercier les personnes qui ton aidée sans en oublier aucune.

Va et bonne route pavé de php à toi :wink:

par fabien_14 » 04 oct. 2006, 14:18

Merci fred9999 ;) et Shrell (ta solution marche nikel !!)

par Shrell » 04 oct. 2006, 14:08

$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

par fred9999 » 04 oct. 2006, 14:08

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

par fabien_14 » 04 oct. 2006, 13:49

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 ?

par fred9999 » 04 oct. 2006, 13:37

pour le echo il faut mettre ça
echo "$c2['Commune']";
//ou tu peut mettre ça aussi
echo "$c2[1]";

par fabien_14 » 04 oct. 2006, 12:34

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.

par fred9999 » 03 oct. 2006, 15:10

oh m.... dsl :oops:

c'es l'habitude des if($mavariable=='qqchose') :lol:

par @rthur » 03 oct. 2006, 15:05

salut
il faut un requete croisé (j'ai un trou pour le terme exact :lol: )

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 ;)

par fred9999 » 03 oct. 2006, 14:47

salut
il faut un requete croisé (j'ai un trou pour le terme exact :lol: )

SELECT region.nom FROM region,site WHERE region.id==site.id_region

essaye ça pour voir

Probleme de requete sql

par fabien_14 » 03 oct. 2006, 14:33

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