Conditionel dans requete

Résolu/Fermé
AmeryCourtz Messages postés 94 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 juin 2012 - 14 août 2009 à 11:00
AmeryCourtz Messages postés 94 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 juin 2012 - 4 sept. 2009 à 14:30
Bonjour à tous,

Bien voila, j'ai un soucis avec ma requète dans cette fonction :



function AnnAff_DéclarationChamps($IdAnn){
		
		//Ouverture BDD
		OuvertureBDD();
		
		//On recupere les params
		$Result = mysql_query("SELECT Descriptif, AnneeBateau, LongueurBateau, LargeurBateau, NbCabine, NbCouchette, 
					AnneeMoteur, NbMoteur, PuissMoteur, EnergieMoteur, PropulsionMoteur, CoorTel, CoorAdresseMail,
					Cat_Designation, MaMo_Designation, Scat_Designation
				FROM annonces_bateaux_categorie AnnC, annonces_bateaux_sous_categorie AnnSsC, annonces_bateaux_marque_moteur AMM, annonces_bateaux AB
				WHERE AB.IdAnnonce = " . $IdAnn . "
					AND AnnC.Cat_Id = AB.Categorie
					AND AMM.MaMo_Id = AB.MarqueMoteur
						OR AB.MarqueMoteur IN ('0')
					AND AnnSsC.Scat_Id = AB.SousCategorie") or die(mysql_error());
		
		//echo("<script>window.alert('".$IdAnn."');</script>");
		$Rslt=mysql_fetch_row($Result);
		
		return $Rslt;
		
		// On a fini de travailler, on ferme la connexion :
		mysql_close();
	}



Mon soucis est là "AND AMM.MaMo_Id = AB.MarqueMoteur
OR AB.MarqueMoteur IN ('0')"

En fait je voudrait dire que si l'id marque moteur "AB.MarqueMoteur" est null je récupère rien ou une valeur null et que sinon je recupere la valeur qui correspond à l'id du moteur "AMM.MaMo_Id"

Le soucis c que j'ai beau mettre :
- "AND AMM.MaMo_Id = AB.MarqueMoteur"
- "AND AMM.MaMo_Id = AB.MarqueMoteur
OR AB.MarqueMoteur IN ('0')"
- "AND AB.MarqueMoteur IS NOT NULL
AND AMM.MaMo_Id = AB.MarqueMoteur"

Y a rien qui marche. Au mieux il me renvoit la valeur du premier id de ma table moteur se que je ne veut pas et au pire il me renvoit plus de tableau du tout.

Dans l'ideal j'aimerais dire "Si AB.MarqueMoteur != 0 alors mettre "AND AMM.MaMo_Id = AB.MarqueMoteur" Sinon donnée une valeur null à l'id moteur

5 réponses

moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
14 août 2009 à 14:48
ok, mais utilise les inner ou left join pour virer ce genre de ligne AND AnnC.Cat_Id = AB.Categorie
ainsi ta clause where se consacrera à des filtres adaptés.
1
AmeryCourtz Messages postés 94 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 juin 2012 18
14 août 2009 à 11:40
Bon c'est bon j'ai bidouiller un peu, je me retrouve avec deux requête, mais au moins sa marche.
0
AmeryCourtz Messages postés 94 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 juin 2012 18
3 sept. 2009 à 10:29
Merci, j'hesité à utiliser les inner join, je suis pas trop à l'aise avec et j'étais pressé par le temps, mais merci à toi ^^

Cordialement
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
3 sept. 2009 à 15:52
vraiment, inner join ou left est plus précis.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
AmeryCourtz Messages postés 94 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 6 juin 2012 18
4 sept. 2009 à 14:30
Je sais je sais je te rassure ^^.

Mais bon mes requêtes marche bien, puis se n'est pas vraiment des liaisons entre table dont j'ai besoin maintenant vu que je passe des variables externe à la requête pour faire des comparatif entre tables.

Cordialement
0