Problème de requete pour petites annonces
sophievar83hyeres
Messages postés
42
Statut
Membre
-
sophievar83hyeres Messages postés 42 Statut Membre -
sophievar83hyeres Messages postés 42 Statut Membre -
Bonjour,
Voici ma requête en abrégée qui affiche toute les annonces du client dans son espace client:
SELECT annonce.*, categorie.*
FROM annonce, categorie
where annonce.MailAnnonceur= $_SESSION['MM_username'] and annonce.idcate=categorie.id
ce qui donne le listing de ses annonces (jusque là c'est bon):
annonce 1 : A vendre blablabla
categorie: matériel
annonce 2 : A vendre blablabla
categorie: papier
annonce 2 : A vendre blablabla
categorie: papier
Mon problème c'est que sur la même page, j'aimerai afficher toutes les catégories dans lesquelles le client à des annonces mais ma requête me donne en résultat toutes les catégories par répétition dont il a des annonces. C'est à dire:
Affichez vos annonces par catégorie:
Catégorie Matériel
Catégorie papier
Catégorie papier (la catégorie papier se répète car il a 2 annonces mais il faudrai qu'elle s'affiche qu'une seule fois)
le résultat devrait être celui là :
Catégorie Matériel
Catégorie papier
en clair je veux afficher toutes les catégories dans lequel le client à des annonces.
Si vous pouvez m'aider, un grand merci
Voici ma requête en abrégée qui affiche toute les annonces du client dans son espace client:
SELECT annonce.*, categorie.*
FROM annonce, categorie
where annonce.MailAnnonceur= $_SESSION['MM_username'] and annonce.idcate=categorie.id
ce qui donne le listing de ses annonces (jusque là c'est bon):
annonce 1 : A vendre blablabla
categorie: matériel
annonce 2 : A vendre blablabla
categorie: papier
annonce 2 : A vendre blablabla
categorie: papier
Mon problème c'est que sur la même page, j'aimerai afficher toutes les catégories dans lesquelles le client à des annonces mais ma requête me donne en résultat toutes les catégories par répétition dont il a des annonces. C'est à dire:
Affichez vos annonces par catégorie:
Catégorie Matériel
Catégorie papier
Catégorie papier (la catégorie papier se répète car il a 2 annonces mais il faudrai qu'elle s'affiche qu'une seule fois)
le résultat devrait être celui là :
Catégorie Matériel
Catégorie papier
en clair je veux afficher toutes les catégories dans lequel le client à des annonces.
Si vous pouvez m'aider, un grand merci
A voir également:
- Problème de requete pour petites annonces
- Marketplace petites annonces - Guide
- Petites majuscules - Guide
- Comment supprimer les annonces publicitaires - Guide
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Java
- Requete sql pix - Forum PHP
20 réponses
salut,
essaie d'ajouter "DISTINCT", je ne trouve pas de doc mais ça donne quelque chose comme :
essaie d'ajouter "DISTINCT", je ne trouve pas de doc mais ça donne quelque chose comme :
SELECT DISTINCT `champ` FROM `table`;
Merci vraiment cela fonctionne très bien.
En revanche, via la même requete j'insère un compte (nombre d'annonce) pour chaque catégorie mais cela me donne un chiffre bidon.
En revanche, via la même requete j'insère un compte (nombre d'annonce) pour chaque catégorie mais cela me donne un chiffre bidon.
via la même requete j'insère un compte (nombre d'annonce) pour chaque catégorie mais cela me donne un chiffre bidon
mets le dans une requête à part.
mets le dans une requête à part.
J'essaye de la faire mais je n'y arrive pas.
Affiche les catégories d'annonces de du client (cà c'est ok)
SELECT DISTINCT annonce.*, categorie.*
FROM annonce, categorie
where annonce.MailAnnonceur= $_SESSION['MM_username'] and annonce.idcate=categorie.id
Affiche le nombre d'annonce pour chaque catégorie du client : (cela ne marche pas. ma requête est fausse)
SELECT Annonce.*, categorie.*
FROM annonce, categorie
where Annonce in (categorie.id )
Comment dois je formuler ma seconde requete pour afficher le nombre d'annonce du client par catégorie
merci
Affiche les catégories d'annonces de du client (cà c'est ok)
SELECT DISTINCT annonce.*, categorie.*
FROM annonce, categorie
where annonce.MailAnnonceur= $_SESSION['MM_username'] and annonce.idcate=categorie.id
Affiche le nombre d'annonce pour chaque catégorie du client : (cela ne marche pas. ma requête est fausse)
SELECT Annonce.*, categorie.*
FROM annonce, categorie
where Annonce in (categorie.id )
Comment dois je formuler ma seconde requete pour afficher le nombre d'annonce du client par catégorie
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Non cela donne sur chaque ligne des catégories le même nombre qui correspond au total d'annonce du client et non le nbre par catégorie.
catégorie pour papier : 62
catégorie pour boisson: 62
catégorie pour porte : 62
catégorie pour papier : 62
catégorie pour boisson: 62
catégorie pour porte : 62
peut être avec quelque chose comme :
et comme ça tu pourrais ajouter ce qu'il faut pour remplacer la première requête.
SELECT COUNT(categorie.id) FROM categorie WHERE categorie.id IN ( SELECT DISTINCT categorie.id FROM annonce, categorie where annonce.MailAnnonceur = $_SESSION['MM_username'] and annonce.idcate=categorie.id );
et comme ça tu pourrais ajouter ce qu'il faut pour remplacer la première requête.
Excusez moi,
je me suis trop emballée. J'ai un message d'erreur.
Je vais tenter de réfflechir sur cette requete et de corriger mon erreur.
Si je n'y arrive pas, puis je vous recontacter demain?
merci
je me suis trop emballée. J'ai un message d'erreur.
Je vais tenter de réfflechir sur cette requete et de corriger mon erreur.
Si je n'y arrive pas, puis je vous recontacter demain?
merci
En clair voici les requetes:
SELECT COUNT(categorie.id) FROM categorie WHERE categorie.id IN( SELECT DISTINCT annonce.*,categorie.*
FROM categorie, annonce
WHERE annonce.idcate=categorie.id and annonce.MailAnnonceur= $_SESSION['MM_username'] )
= ERREUR : Notice: Undefined index: id
**************************
SELECT COUNT(categorie.id) FROM categorie WHERE categorie.id IN ( SELECT DISTINCT annonce.*,categorie.*
FROM categorie, annonce
WHERE annonce.idcate=categorie.id and annonce.MailAnnonceur= $_SESSION['MM_username'] )
= ERREUR : Operand should contain 1 column(s)
j'attends ton aide Matthieu. (merci:-))
SELECT COUNT(categorie.id) FROM categorie WHERE categorie.id IN( SELECT DISTINCT annonce.*,categorie.*
FROM categorie, annonce
WHERE annonce.idcate=categorie.id and annonce.MailAnnonceur= $_SESSION['MM_username'] )
= ERREUR : Notice: Undefined index: id
**************************
SELECT COUNT(categorie.id) FROM categorie WHERE categorie.id IN ( SELECT DISTINCT annonce.*,categorie.*
FROM categorie, annonce
WHERE annonce.idcate=categorie.id and annonce.MailAnnonceur= $_SESSION['MM_username'] )
= ERREUR : Operand should contain 1 column(s)
j'attends ton aide Matthieu. (merci:-))
salut,
pour que ta clause IN puisse fonctionner, il faut que la requête entre parenthèses ne renvoie qu'un champ d'une seule table, sinon MySQL ne sait pas laquelle choisir.
là tu lui mets tous les champs de deux tables alors qu'il ne lui faut qu'une liste de "categorie.id".
(et soit dit en passant il ne faut jamais utiliser "*", c'est une mauvaise habitude)
j'attends ton aide Matthieu. (merci:-))
punaise, ça rigole plus…
par contre je vois pas où tu m'as trouvé 2 T !
-:oD
pour que ta clause IN puisse fonctionner, il faut que la requête entre parenthèses ne renvoie qu'un champ d'une seule table, sinon MySQL ne sait pas laquelle choisir.
WHERE categorie.id IN( SELECT DISTINCT annonce.*,categorie.*
FROM categorie, annonce
WHERE annonce.idcate=categorie.id and annonce.MailAnnonceur= $_SESSION['MM_username']
là tu lui mets tous les champs de deux tables alors qu'il ne lui faut qu'une liste de "categorie.id".
(et soit dit en passant il ne faut jamais utiliser "*", c'est une mauvaise habitude)
j'attends ton aide Matthieu. (merci:-))
punaise, ça rigole plus…
par contre je vois pas où tu m'as trouvé 2 T !
-:oD
Je suis contente de te voir sur ce forum,
WHERE categorie.id IN( SELECT DISTINCT categorie.id
FROM categorie, annonce
WHERE annonce.idcate=categorie.id and annonce.MailAnnonceur= $_SESSION['MM_username']
Et voici le nouveau message d'erreur.
= ERREUR : Notice: Undefined index: id
par contre je vois pas où tu m'as trouvé 2 T ! (J'ai 2 tables oui, 1 pour les annonces et 1 pour les catégories)
WHERE categorie.id IN( SELECT DISTINCT categorie.id
FROM categorie, annonce
WHERE annonce.idcate=categorie.id and annonce.MailAnnonceur= $_SESSION['MM_username']
Et voici le nouveau message d'erreur.
= ERREUR : Notice: Undefined index: id
par contre je vois pas où tu m'as trouvé 2 T ! (J'ai 2 tables oui, 1 pour les annonces et 1 pour les catégories)
C'était ambigu 2 T pour table et/ou 2 T pour ton prénom :-))
*** CA C' EST OK ***
/// affiche toutes les catégories dans lesquelles le client à des annonces:
Affiche les catégories d'annonces de du client (cà c'est ok)
SELECT DISTINCT annonce.*, categorie.*
FROM annonce, categorie
where annonce.MailAnnonceur= $_SESSION['MM_username'] and annonce.idcate=categorie.id
/// transformation de la même requete qui doit afficher le nombre d'annonces que le client à dans chaque catégorie:
SELECT COUNT(categorie.id) FROM categorie WHERE categorie.id IN( SELECT DISTINCT categorie.id
FROM categorie, annonce
WHERE annonce.idcate=categorie.id and annonce.MailAnnonceur= $_SESSION['MM_username']
= ERREUR : Notice: Undefined index: id
---------------------------------------------------------------------------------------------
J'affiche le résultat que l'on doit voir sur la page, cela sera peut être plus clair:
PAGE COMPTE CLIENT
Vous avez 4 annonces: ( et c'est cette requête qui ne va pas, avec ta première requete cela m'affichait bien la liste mais ta nouvelle requete qui doit m'afficher le nbre d'annonce par catégorie ne marche pas)
Triez par catégorie:
Table (1 annonce)
papier (2 annonces)
carton (1 annonce)
(affichage des annonces du client. ca c'est ok, c'est 1 requete à part)
aNONNCE 1 : blalbla - caté: table
aNONNCE 2 : blalbla - caté: papier
aNONNCE 3 : blalbla - caté: papier
aNONNCE 4 : blalbla - caté: carton
*** CA C' EST OK ***
/// affiche toutes les catégories dans lesquelles le client à des annonces:
Affiche les catégories d'annonces de du client (cà c'est ok)
SELECT DISTINCT annonce.*, categorie.*
FROM annonce, categorie
where annonce.MailAnnonceur= $_SESSION['MM_username'] and annonce.idcate=categorie.id
/// transformation de la même requete qui doit afficher le nombre d'annonces que le client à dans chaque catégorie:
SELECT COUNT(categorie.id) FROM categorie WHERE categorie.id IN( SELECT DISTINCT categorie.id
FROM categorie, annonce
WHERE annonce.idcate=categorie.id and annonce.MailAnnonceur= $_SESSION['MM_username']
= ERREUR : Notice: Undefined index: id
---------------------------------------------------------------------------------------------
J'affiche le résultat que l'on doit voir sur la page, cela sera peut être plus clair:
PAGE COMPTE CLIENT
Vous avez 4 annonces: ( et c'est cette requête qui ne va pas, avec ta première requete cela m'affichait bien la liste mais ta nouvelle requete qui doit m'afficher le nbre d'annonce par catégorie ne marche pas)
Triez par catégorie:
Table (1 annonce)
papier (2 annonces)
carton (1 annonce)
(affichage des annonces du client. ca c'est ok, c'est 1 requete à part)
aNONNCE 1 : blalbla - caté: table
aNONNCE 2 : blalbla - caté: papier
aNONNCE 3 : blalbla - caté: papier
aNONNCE 4 : blalbla - caté: carton
dans :
il manque la parenthèse de fin mais je suppose quelle a sauté avec le copier/coller.
c'est peut être d'utiliser deux fois la même table et le même champ qui le perturbe, on peut Essayer avec un alias.
j'ai ajouté les ` et ' en plus.
SELECT COUNT(categorie.id) FROM categorie WHERE categorie.id IN( SELECT DISTINCT categorie.id FROM categorie, annonce WHERE annonce.idcate=categorie.id and annonce.MailAnnonceur= $_SESSION['MM_username']
il manque la parenthèse de fin mais je suppose quelle a sauté avec le copier/coller.
c'est peut être d'utiliser deux fois la même table et le même champ qui le perturbe, on peut Essayer avec un alias.
SELECT COUNT(`main`.`id`) FROM `categorie` AS `main` WHERE `main`.`id` IN( SELECT DISTINCT `categorie`.`id` FROM `categorie`, `annonce` WHERE `annonce`.`idcate`=`categorie`.`id` and `annonce`.`MailAnnonceur`='$_SESSION['MM_username']');
j'ai ajouté les ` et ' en plus.
J'ai toujours le même mesage d'erreur
= ERREUR : Notice: Undefined index: id
Oui j'avais bien fermé la parenthèse.
= ERREUR : Notice: Undefined index: id
Oui j'avais bien fermé la parenthèse.