Problème résultat requête select

cs_slayer07 Messages postés 24 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 6 septembre 2012 - 4 nov. 2011 à 09:28
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 - 19 nov. 2011 à 13:01
Bonjour, je viens de faire une requête select sur 2 tables. Le souci que j'ai est que lors de l’exécution de la requête,il m'apparait 2 résultats avec les montants alors que logiquement je voudrais ne récupérer qu'un enregistrement avec aucun montant car c'est ce que je cherche dans ma requête.
Voici ma requête
SELECT ARBO.ID_ARBO, ARBO.NOM , ARBO.PRENOM, ARBO.RAISON_SOCIALE, ARBO.ADRESSE, ARBO.CP, VILLE.NOM,ARBO.TEL, ARBO.PORTABLE, ARBO.FAX,
ARBO.MAIL,CHEQUE.MONTANT, case when ARBO.ID_ARBO not in(SELECT ID_ARBO from CHEQUE) then ('aucun chèque effectué') end as COM
FROM CHEQUE,ARBO LEFT OUTER JOIN
VILLE ON ARBO.ID_VILLE = VILLE.ID_VILLE
WHERE (ARBO.ID_ARBO not in(SELECT ID_ARBO from CHEQUE))

2 réponses

cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
19 nov. 2011 à 12:56
Bonjour,

Il est peut'être trop tard mais bon,


Pourquoi demander CHEQUE.MONTANT alors que ARBO.ID_ARBO n'est pas dans CHEQUE?

Pourquoi mettre un case car la réponse sera toujours 'aucun chèque effectué' (c'est le filtre de ton select)

Pour moi la requete doit simplement être :


SELECT ARBO.ID_ARBO, ARBO.NOM , ARBO.PRENOM, ARBO.RAISON_SOCIALE, ARBO.ADRESSE, ARBO.CP, VILLE.NOM,ARBO.TEL, ARBO.PORTABLE, ARBO.FAX,
ARBO.MAIL,MONTANT=0,COM = 'aucun chèque effectué'
FROM VILLE,ARBO
where ARBO.ID_VILLE = VILLE.ID_VILLE
and ARBO.ID_ARBO not in(SELECT ID_ARBO from CHEQUE)





Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
0
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
19 nov. 2011 à 13:01
OOOPPPSSS,

J'ai oublié que la ville n'existait pas pas dans tous les cas donc mettre '*'

SELECT ARBO.ID_ARBO, ARBO.NOM , ARBO.PRENOM, ARBO.RAISON_SOCIALE, ARBO.ADRESSE, ARBO.CP, VILLE.NOM,ARBO.TEL, ARBO.PORTABLE, ARBO.FAX,
ARBO.MAIL,MONTANT=0,COM = 'aucun chèque effectué'
FROM VILLE,ARBO
where ARBO.ID_VILLE *= VILLE.ID_VILLE
and ARBO.ID_ARBO not in(SELECT ID_ARBO from CHEQUE)




Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
0