IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

@SqlResultSetMappings avec count


Sujet :

JPA Java

  1. #1
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 057
    Points : 1 532
    Points
    1 532
    Par défaut @SqlResultSetMappings avec count
    Bonjour,

    Je reviens à la charge.

    Je ne comprends pas mon pb, il doit être tout bête mais je tourne en rond


    J'ai une classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    @Entity
    @Table(name = "ETIC_THEMES_USER")
    @XmlRootElement
    @SqlResultSetMapping(
             name = "findByIdThemeCountQuestions",
            entities = {@EntityResult(entityClass = EticThemesUser.class)},
            columns = {@ColumnResult(name = "countQuestions")}
    )
    public class EticThemesUser implements Serializable {
    ....
     
      @OneToMany(cascade = CascadeType.ALL, mappedBy = "idTheme")
        private Collection<EticQuestionsUser> eticQuestionsUserCollection;
        @Transient
        private Integer countQuestions;
     
        public EticThemesUser(BigDecimal idTheme) {
            this.idTheme = idTheme;
        }
     
        public Integer getCountQuestions() {
            this.countQuestions = this.getEticQuestionsUserCollection().size();
            return countQuestions;
        }
     
        public void setCountQuestions(Integer countQuestions) {
            this.countQuestions = countQuestions;
        }
    jusqu'a la tout va bien, je tente d'utiliser le SqlResultSetMapping

    Avec un objet facade

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    /**
         * Rapporter le nombre de questions en fonction des thèmes
         *
         * @return List<Object[]>
         * Object[0] ramène le thème Object[1] ramène le count
         */
        @Override
        public List<Object[]> getThemeByCountQuestions() {
            String req = "SELECT e.idTheme, count(d.idTheme) as countQuestions FROM EticThemesUser e join e.eticQuestionsUserCollection d on e.idTheme=d.idTheme group by e.idTheme";
            Query query = em.createNativeQuery(req, "findByIdThemeCountQuestions");
            em.
            Session session = em.unwrap(JpaEntityManager.class).getActiveSession();
            DatabaseQuery databaseQuery = ((EJBQueryImpl) query).getDatabaseQuery();
            databaseQuery.prepareCall(session, new DatabaseRecord());
            String sqlString = databaseQuery.getSQLString();
            System.out.println("Requête + " + sqlString);
            return query.getResultList();
        }
    }
    Cependant dans mes logs c'est comme si le JPQL n'était pas transformé en SQL, car j'ai une requête avant qu'on voit concrètement se transformer ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     
    Précis:   SELECT ID_THEME, ACTIF, DEGRE, LIBELLE_THEME, ORDRE, TOOLTIP FROM ETIC_THEMES WHERE (DEGRE = ?)
        bind => [1 parameter bound]
    Infos:   taille : 7
    Infos:   EJB : 1
    Infos:   EJB : 2
    Infos:   EJB : 3
    Infos:   EJB : 4
    Infos:   EJB : 5
    Infos:   EJB : 6
    Infos:   EJB : 7
    Infos:   Requête + SELECT e.idTheme, count(d.idTheme) as countQuestions FROM EticThemesUser e join e.eticQuestionsUserCollection d on e.idTheme=d.idTheme group by e.idTheme
    Précis:   SELECT e.idTheme, count(d.idTheme) as countQuestions FROM EticThemesUser e join e.eticQuestionsUserCollection d on e.idTheme=d.idTheme group by e.idTheme
    Avertissement:   Local Exception Stack: 
    Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLSyntaxErrorException: ORA-00942: Table ou vue inexistante
    Error Code: 942
    Call: SELECT e.idTheme, count(d.idTheme) as countQuestions FROM EticThemesUser e join e.eticQuestionsUserCollection d on e.idTheme=d.idTheme group by e.idTheme
    j'ai essayé avec encore plus simple sans le compte et c'est comme si le JPQL était envoyé tel quel à la base ??


    Olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    peux-tu nous donner les deux tables mis en relations ici,la on verra ou est le probleme.

    Eric

  3. #3
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 057
    Points : 1 532
    Points
    1 532
    Par défaut les deux tables
    Bonjour,


    Les deux tables en relations

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
     
    package com.open.survey.oracle;
     
    import java.io.Serializable;
    import java.math.BigDecimal;
    import java.math.BigInteger;
    import java.util.Collection;
    import javax.persistence.Basic;
    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.ColumnResult;
    import javax.persistence.Entity;
    import javax.persistence.EntityResult;
    import javax.persistence.Id;
    import javax.persistence.NamedQueries;
    import javax.persistence.NamedQuery;
    import javax.persistence.OneToMany;
    import javax.persistence.SqlResultSetMapping;
    import javax.persistence.Table;
    import javax.persistence.Transient;
    import javax.validation.constraints.NotNull;
    import javax.validation.constraints.Size;
    import javax.xml.bind.annotation.XmlRootElement;
    import javax.xml.bind.annotation.XmlTransient;
     
    /**
     *
     * @author olivier Thiébaut
     */
    @NamedQueries({
        @NamedQuery(name = "EticThemesUser.findAll", query = "SELECT e FROM EticThemesUser e"),
        @NamedQuery(name = "EticThemesUser.findByIdTheme", query = "SELECT e FROM EticThemesUser e WHERE e.idTheme = :idTheme"),
        @NamedQuery(name = "EticThemesUser.findByLibelleTheme", query = "SELECT e FROM EticThemesUser e WHERE e.libelleTheme = :libelleTheme"),
        @NamedQuery(name = "EticThemesUser.findByDegre", query = "SELECT e FROM EticThemesUser e WHERE e.degre = :degre"),
        @NamedQuery(name = "EticThemesUser.findByOrdre", query = "SELECT e FROM EticThemesUser e WHERE e.ordre = :ordre"),
        @NamedQuery(name = "EticThemesUser.findByActif", query = "SELECT e FROM EticThemesUser e WHERE e.actif = :actif"),
        @NamedQuery(name = "EticThemesUser.findByTooltip", query = "SELECT e FROM EticThemesUser e WHERE e.tooltip = :tooltip"),})
     
    @Entity
    @Table(name = "ETIC_THEMES_USER")
    @XmlRootElement
    @SqlResultSetMapping(
             name = "findByIdThemeCountQuestions",
            entities = {@EntityResult(entityClass = EticThemesUser.class)},
            columns = {@ColumnResult(name = "countQuestions")}
    )
    public class EticThemesUser implements Serializable {
     
        private static final long serialVersionUID = 1L;
     
        // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
        @Id
        @Basic(optional = false)
        @NotNull
        @Column(name = "ID_THEME")
        private BigDecimal idTheme;
        @Basic(optional = false)
        @NotNull
        @Size(min = 1, max = 250)
        @Column(name = "LIBELLE_THEME")
        private String libelleTheme;
        @Basic(optional = false)
        @NotNull
        @Size(min = 1, max = 20)
        @Column(name = "DEGRE")
        private String degre;
        @Basic(optional = false)
        @NotNull
        @Column(name = "ORDRE")
        private BigInteger ordre;
        @Basic(optional = false)
        @NotNull
        @Column(name = "ACTIF")
        private short actif;
        @Size(max = 500)
        @Column(name = "TOOLTIP")
        private String tooltip;
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "idTheme")
        private Collection<EticQuestionsUser> eticQuestionsUserCollection;
        @Transient
        private BigInteger countQuestions;
     
        public EticThemesUser(BigDecimal idTheme) {
            this.idTheme = idTheme;
        }
     
        public BigInteger getCountQuestions() {
            this.countQuestions = BigInteger.valueOf(this.getEticQuestionsUserCollection().size());
            return countQuestions;
        }
     
        public void setCountQuestions(BigInteger countQuestions) {
            this.countQuestions = countQuestions;
        }
     
        public EticThemesUser() {
        }
     
        public EticThemesUser(BigDecimal idTheme, String libelleTheme, String degre, BigInteger ordre, short actif) {
            this.idTheme = idTheme;
            this.libelleTheme = libelleTheme;
            this.degre = degre;
            this.ordre = ordre;
            this.actif = actif;
        }
     
        public BigDecimal getIdTheme() {
            return idTheme;
        }
     
        public void setIdTheme(BigDecimal idTheme) {
            this.idTheme = idTheme;
        }
     
        public String getLibelleTheme() {
            return libelleTheme;
        }
     
        public void setLibelleTheme(String libelleTheme) {
            this.libelleTheme = libelleTheme;
        }
     
        public String getDegre() {
            return degre;
        }
     
        public void setDegre(String degre) {
            this.degre = degre;
        }
     
        public BigInteger getOrdre() {
            return ordre;
        }
     
        public void setOrdre(BigInteger ordre) {
            this.ordre = ordre;
        }
     
        public short getActif() {
            return actif;
        }
     
        public void setActif(short actif) {
            this.actif = actif;
        }
     
        public String getTooltip() {
            return tooltip;
        }
     
        public void setTooltip(String tooltip) {
            this.tooltip = tooltip;
        }
     
        @XmlTransient
        public Collection<EticQuestionsUser> getEticQuestionsUserCollection() {
            return eticQuestionsUserCollection;
        }
     
        public void setEticQuestionsUserCollection(Collection<EticQuestionsUser> eticQuestionsUserCollection) {
            this.eticQuestionsUserCollection = eticQuestionsUserCollection;
        }
     
        @Override
        public int hashCode() {
            int hash = 0;
            hash += (idTheme != null ? idTheme.hashCode() : 0);
            return hash;
        }
     
        @Override
        public boolean equals(Object object) {
            // TODO: Warning - this method won't work in the case the id fields are not set
            if (!(object instanceof EticThemesUser)) {
                return false;
            }
            EticThemesUser other = (EticThemesUser) object;
            if ((this.idTheme == null && other.idTheme != null) || (this.idTheme != null && !this.idTheme.equals(other.idTheme))) {
                return false;
            }
            return true;
        }
     
        @Override
        public String toString() {
            return "com.open.survey.user.EticThemesUser[ idTheme=" + idTheme + " ]";
        }
     
    }
    la tables des Questions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
     
    import com.open.survey.oracle.EticDegres;
    import com.open.survey.oracle.EticTypes;
    import com.open.survey.oracle.EticUtilisateurs;
    import java.io.Serializable;
    import java.math.BigDecimal;
    import java.math.BigInteger;
    import javax.persistence.Basic;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.NamedQueries;
    import javax.persistence.NamedQuery;
    import javax.persistence.Table;
    import javax.validation.constraints.NotNull;
    import javax.validation.constraints.Size;
    import javax.xml.bind.annotation.XmlRootElement;
     
    /**
     *
     * @author olivier
     */
    @Entity
    @Table(name = "ETIC_QUESTIONS_USER")
    @XmlRootElement
    @NamedQueries({
        @NamedQuery(name = "EticQuestionsUser.findAll", query = "SELECT e FROM EticQuestionsUser e"),
        @NamedQuery(name = "EticQuestionsUser.findByIdQuestion", query = "SELECT e FROM EticQuestionsUser e WHERE e.idQuestion = :idQuestion"),
        @NamedQuery(name = "EticQuestionsUser.findByLibelleQuestion", query = "SELECT e FROM EticQuestionsUser e WHERE e.libelleQuestion = :libelleQuestion"),
        @NamedQuery(name = "EticQuestionsUser.findByActif", query = "SELECT e FROM EticQuestionsUser e WHERE e.actif = :actif"),
        @NamedQuery(name = "EticQuestionsUser.findByOrdre", query = "SELECT e FROM EticQuestionsUser e WHERE e.ordre = :ordre"),
        @NamedQuery(name = "EticQuestionsUser.findByNumero", query = "SELECT e FROM EticQuestionsUser e WHERE e.numero = :numero")})
    public class EticQuestionsUser implements Serializable {
        private static final long serialVersionUID = 1L;
        // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
        @Id
        @Basic(optional = false)
        @NotNull
        @Column(name = "ID_QUESTION")
        private BigDecimal idQuestion;
        @Basic(optional = false)
        @NotNull
        @Size(min = 1, max = 1000)
        @Column(name = "LIBELLE_QUESTION")
        private String libelleQuestion;
        @Basic(optional = false)
        @NotNull
        @Column(name = "ACTIF")
        private short actif;
        @Basic(optional = false)
        @NotNull
        @Column(name = "ORDRE")
        private BigInteger ordre;
        @Column(name = "NUMERO")
        private BigInteger numero;
        @JoinColumn(name = "ID_UTILISATEUR", referencedColumnName = "ID_UTILISATEUR")
        @ManyToOne(optional = false)
        private EticUtilisateurs idUtilisateur;
        @JoinColumn(name = "CODE_TYPE", referencedColumnName = "CODE_TYPE")
        @ManyToOne(optional = false)
        private EticTypes codeType;
        @JoinColumn(name = "ID_THEME", referencedColumnName = "ID_THEME")
        @ManyToOne(optional = false)
        private EticThemesUser idTheme;
        @JoinColumn(name = "DEGRE", referencedColumnName = "DEGRE")
        @ManyToOne(optional = false)
        private EticDegres degre;
     
        public EticQuestionsUser() {
        }
     
        public EticQuestionsUser(BigDecimal idQuestion) {
            this.idQuestion = idQuestion;
        }
     
        public EticQuestionsUser(BigDecimal idQuestion, String libelleQuestion, short actif, BigInteger ordre) {
            this.idQuestion = idQuestion;
            this.libelleQuestion = libelleQuestion;
            this.actif = actif;
            this.ordre = ordre;
        }
     
        public BigDecimal getIdQuestion() {
            return idQuestion;
        }
     
        public void setIdQuestion(BigDecimal idQuestion) {
            this.idQuestion = idQuestion;
        }
     
        public String getLibelleQuestion() {
            return libelleQuestion;
        }
     
        public void setLibelleQuestion(String libelleQuestion) {
            this.libelleQuestion = libelleQuestion;
        }
     
        public short getActif() {
            return actif;
        }
     
        public void setActif(short actif) {
            this.actif = actif;
        }
     
        public BigInteger getOrdre() {
            return ordre;
        }
     
        public void setOrdre(BigInteger ordre) {
            this.ordre = ordre;
        }
     
        public BigInteger getNumero() {
            return numero;
        }
     
        public void setNumero(BigInteger numero) {
            this.numero = numero;
        }
     
        public EticUtilisateurs getIdUtilisateur() {
            return idUtilisateur;
        }
     
        public void setIdUtilisateur(EticUtilisateurs idUtilisateur) {
            this.idUtilisateur = idUtilisateur;
        }
     
        public EticTypes getCodeType() {
            return codeType;
        }
     
        public void setCodeType(EticTypes codeType) {
            this.codeType = codeType;
        }
     
        public EticThemesUser getIdTheme() {
            return idTheme;
        }
     
        public void setIdTheme(EticThemesUser idTheme) {
            this.idTheme = idTheme;
        }
     
        public EticDegres getDegre() {
            return degre;
        }
     
        public void setDegre(EticDegres degre) {
            this.degre = degre;
        }
     
        @Override
        public int hashCode() {
            int hash = 0;
            hash += (idQuestion != null ? idQuestion.hashCode() : 0);
            return hash;
        }
     
        @Override
        public boolean equals(Object object) {
            // TODO: Warning - this method won't work in the case the id fields are not set
            if (!(object instanceof EticQuestionsUser)) {
                return false;
            }
            EticQuestionsUser other = (EticQuestionsUser) object;
            if ((this.idQuestion == null && other.idQuestion != null) || (this.idQuestion != null && !this.idQuestion.equals(other.idQuestion))) {
                return false;
            }
            return true;
        }
     
        @Override
        public String toString() {
            return "com.open.survey.user.EticQuestionsUser[ idQuestion=" + idQuestion + " ]";
        }
     
    }
    Bon voila j'ai tout mis, sauf si vous voulez le code SQL

    Rassurez moi ! j'ai un doute quand on fait
    em.createNativeQuery c'est du JPQL ou du SQL natif, dans tous les livres que j'ai cela semble du JPQL ?



    Olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  4. #4
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    essaies ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String req =  "select count(equ) as Nombre from  EticQuestionsUser as equ right joint equ.idTheme as etu group by etu.idTheme";
    c´est du JPQL bien sur.

    Eric

  5. #5
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 057
    Points : 1 532
    Points
    1 532
    Par défaut Code natif
    Bonjour,

    Je viens de tester avec du code natif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      @Override
        public List<EticThemesUser> getThemeByCountQuestions() {
     
            String req = "SELECT e.ID_THEME,e.LIBELLE_THEME, e.DEGRE, e.ORDRE, e.ACTIF, e.TOOLTIP,count(d.ID_THEME) as countQuestions FROM ETIC_THEMES_USER e join ETIC_QUESTIONS_USER d "
                            + " ON d.ID_THEME= e.ID_THEME group by e.ID_THEME,e.LIBELLE_THEME,e.DEGRE, e.ORDRE, e.ACTIF, e.TOOLTIP";
            Query query = em.createNativeQuery(req, "findByIdThemeCountQuestions");
    Et le code fonctionne, je ne comprends pas, il devrait effectuer la traduction non ?

    Je vais aussi tenter ta solution

    Olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

Discussions similaires

  1. @SqlResultSetMappings avec lien sur un count
    Par nathieb dans le forum JPA
    Réponses: 2
    Dernier message: 16/05/2014, 16h46
  2. Access/SQL : Problème avec Count
    Par Taurëndil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/01/2005, 16h49
  3. [CR] incrementer avec count dans deux etat lieés
    Par souad26 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 08/11/2004, 18h18
  4. Query sur plusieurs colonnes avec count(distinct...)
    Par Jeankiki dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/08/2004, 16h22
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 19h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo