Pb Requete SQL JOIN

gabrenicolas Messages postés 9 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 1 septembre 2009 - 24 août 2009 à 12:09
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 25 août 2009 à 11:26
Bonjour à tous,


Petit problème avec le code suivant ca ne passe pas JOIN error...


Quelqu'un pourrait-il éclairer ma lanterne...


le code:
Private Sub Form_Load()
Dim SqlStr As String
Dim rs As DAO.Recordset

txtDateRef = Date
    
    'load data
    SqlStr = "SELECT type.TYPE, Count(*) AS [counter]" & _
"FROM ((HISTORY.STATUS_ID  JOIN STATUS.ID)JOIN TYPE.ID)" & _
"WHERE (((history.STATUS_ID)=[status].[id]) AND ((status.STATUS)='Refused') AND ((history.COUPONTYPE_ID)=[type].[id]) AND ((Format([history].[modifydatetime],'MM/DD/YYYY'))='10/08/2008') AND ((history.MODIFYDATETIME)=(select max(history2.modifydatetime) from history as history2 where history2.couponid = history.couponid)))" & _
"GROUP BY type.TYPE" & _
"HAVING (((type.TYPE)='1 client'));"

    
      
    Set rs = CurrentDb.OpenRecordset(SqlStr)
    rs.MoveFirst
    Me.txtopen1Nbr = rs!COUNTER
    rs.Close




Merci bien .

3 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
24 août 2009 à 14:01
Salut,

C'est quoi toutes ces parantheses?

Les join sont a couplés avec des LEFT, INNER ou RIGHT et
ON pour la clause de liaison.


select t2.col1,t1.col2 from t1
INNER JOIN t2 ON t1.fk = t2.id
WHERE status.STATUS='Refused'

Pas besoin de parantheses dans la clause where
sinon pour regrouper des AND ou des OR.

ta clasuse
history.STATUS_ID=[status].[id] doit etre dans le ON


Dans ta sous requete il manque la table history
car elle est aliase comme hsitory2.

Testes tes requetes dans access.
Avant de les mettre dans ton programme.

Prend l'assisant d'access pour commencer les liaisons innerjoin si tu veux.
Attention à l'ordre des tables.

Bon courage.
0
gabrenicolas Messages postés 9 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 1 septembre 2009
25 août 2009 à 11:13
Ok pour le courage je risque d'en avoir besoin.

Déjà merci pour ces premières info..

Voici ce à quoi j'arrive et qui malheureusement ne fonctionne tjs pas...


SqlStr = "SELECT type.TYPE, Count(*) AS [counter]" & _
"FROM (HISTORY.* INNER JOIN STATUS.* ON history.status_id status.id) INNER JOIN TYPE.* on history.coupontype type.id" & _
"WHERE status.STATUS ='Refused' AND ((Format([history].[modifydatetime],'MM/DD/YYYY'))= txtDateRef) AND ((history.MODIFYDATETIME)=(select max(history2.modifydatetime) from history as history2 where history2.couponid = history.couponid)))" & _
"GROUP BY type.TYPE" & _
"HAVING (((type.TYPE)='1 client'));"



Encore un petit coup de pouce p-e..Mnt il y a un pb dans la clause apparement..


Un grand merci...
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
25 août 2009 à 11:26
trop de ()

(((type.TYPE)='1 client')) --> type.TYPE='1 client
0
Rejoignez-nous