Conditionel dans requete

Résolu
AmeryCourtz Messages postés 94 Date d'inscription   Statut Membre Dernière intervention   -  
AmeryCourtz Messages postés 94 Date d'inscription   Statut Membre Dernière intervention   -
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 872 Date d'inscription   Statut Membre Dernière intervention   92
 
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   Statut Membre Dernière intervention   18
 
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   Statut Membre Dernière intervention   18
 
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 872 Date d'inscription   Statut Membre Dernière intervention   92
 
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   Statut Membre Dernière intervention   18
 
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