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

PHP & Base de données Discussion :

probléme select opérateur AND


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 21
    Points
    21
    Par défaut probléme select opérateur AND
    Bonjour à tous,

    Voila j'ai un problème tout bête.

    J'ai une table news_abo_liste

    abo_id-----id_site
    24----------- 2
    24----------- 1
    25----------- 3
    26----------- 8
    26----------- 9

    Je voudrais faire une requête du style : $sql = 'SELECT abo_id FROM news_abo_liste WHERE id_site =2 AND id_site = 1';

    Je m'attend à avoir comme résultat : 24 ce qui me semble normal mais je n'ai pas du tout de résultat ??!!! o_O

    Quelqu'un aurait une idée du problème ?

    Merci d'avance

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    C'est normal, la tu recherches les LIGNES où tu as un site d'ou l'id est 1 et 2 à la fois donc tu n'as aucun résultat.

    Une solution possible a froid:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT abo_id, COUNT(*) AS NbSites FROM news_abo_liste WHERE id_site = 2 OR id_site = 1 GROUP BY abo_id
    Ca va te dire, pour chaque abo_id le nombre de sites qui sont soit 1 soit 2, donc dans la colonne NbSites tu auras soit 0 (aucun site a 1 ou 2), soit 1 (site 1 OU site 2) soit 2 (site 2 ET site 1)

    Comme les résultats sont triés sur cette colonne en décroissant, tu récupères rapidement tous ceux qui ont les deux sites

    (tu pourrais aussi utiliser un SELECT IN pour choisir ceux qui ont le site 1, puis parmis eux ceux qui ont le site 2).

    Il y a surement une méthode plus propre

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 21
    Points
    21
    Par défaut
    Merci pour la soluce :-)

    Si tu as sous la main avec la solution avec SELECT IN je suis preneur aussi

  4. #4
    Débutant
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Points : 704
    Points
    704
    Par défaut
    la syntaxe de IN est la suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT "nom de colonne"
    FROM "nom de table"
    WHERE "nom de colonne" IN ('valeur1', 'valeur2', ...)
    Donc ton cas, tu pourra mettre valeur1=24 en autre....
    Évènements dans le 06?
    www.sortir06.com

  5. #5
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Ouais en gros ca donnera ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT abo_id FROM news_abo_liste WHERE id_site = 2 AND abo_id IN (SELECT SELECT abo_id FROM news_abo_liste WHERE id_site = 1)
    En gros tu prends tous les abo_id dont l'id_site est 2 et qui existent deja dans la liste des abo_id dont 'lid_site est 1.

    Tu aurais aussi pu utiliser INTERSECT selon la base de données que tu as choisi, comme quoi il y en a des solutions.

Discussions similaires

  1. Problème SELECT, CASE et Group by
    Par Royd938 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 03/10/2014, 07h41
  2. Problème d'opérateur
    Par iomega dans le forum Langage
    Réponses: 18
    Dernier message: 17/11/2005, 11h31
  3. [JTable]Problême de Look and Feel???
    Par D-Phaz dans le forum Composants
    Réponses: 1
    Dernier message: 05/08/2005, 15h24
  4. Problème select MAX(annee) dans une requête
    Par grisounette dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 28/10/2004, 17h36
  5. SQL :select et AND
    Par Shabata dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/05/2003, 13h39

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