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 :

Fusion de tables, erreur table vide [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Par défaut Fusion de tables, erreur table vide
    Bonjour,

    Je suis conscient que le titre n'est pas très explicite ^^.
    Néanmoins je vais essayer de mieux m'expliquer.

    J'ai un soucis avec une requête sql que voici :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT me.id as id,me.nom as nom,me.prenom as prenom,me.avatar as avatar FROM mc__amis AS am, mc__membres AS me WHERE NOT EXISTS (SELECT id FROM mc__amis WHERE (id_demandeur = '2' AND id_receveur=me.id) OR (id_demandeur=me.id AND id_receveur = '2')) AND me.actif = '1' AND me.nom LIKE '%dupond'

    En claire je recherche dans la base le nom d'un membre, mais que si il n'est pas déja enregistré dans la table mc__amis.

    Le soucis est que si j'ai déjà un enregistrement dans la table mc_amis tous fonctionne correctement, par contre si la table mc_amis est vierge (donc vide) je n'ai aucun résultat qui s'affiche.

    ma question est : es ce qu'il y a un moyen de contourner ceci ou va t'il falloir que je vérifie avant si ma table est vide ?

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Par défaut
    Bonjour,

    Heu je commence à avoir un peu mal au crâne en cette fin de journée mais quelque chose comme ceci ne répondrait t'il pas à ta question ?

    Code sql : 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
    SELECT 
    DISTINCT 
    	id,
    	nom,
    	prenom,
    	avatar 
    FROM 
    	mc__membres
    WHERE 
    	actif = '1'
    AND 
    	nom 
    LIKE 
    	'%dupond'
    AND 
    	id NOT IN (SELECT DISTINCT id FROM mc__amis WHERE id_demandeur = '2' OR id_receveur = '2')

    PS : au passage, des entiers il n'y a pas besoin de les mettre entre quote - si tant est que id_receveur et id_demandeur soient bien des entiers. "actif" est un bool j'imagine, mais c'est pareil, pas besoin de quote non plus.

  3. #3
    Membre averti
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Par défaut
    Merci de ta réponse

    Mais ceci ne change rien aucun affichage

    Concernant les quotes a la base les valeur ne sont pas des entiers

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Par défaut
    Ok,

    Et en faisant :

    Code sql : 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
    SELECT 
    DISTINCT 
    	id,
    	nom,
    	prenom,
    	avatar 
    FROM 
    	mc__membres
    WHERE 
    	actif = '1'
    AND 
    	nom 
    LIKE 
    	'%dupond'
    AND 
    	id NOT IN (SELECT IF(id, id, 0) id FROM mc__amis WHERE id_demandeur = '2' OR id_receveur = '2')

    ?

  5. #5
    Membre averti
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Par défaut
    Il ne m'affiche qu'un seul résultat sachant qu'il devrait m'en afficher 4 au totale

    voici ma requête :

    Code sql : 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
    SELECT DISTINCT id, nom, prenom, avatar
    FROM mc__membres
    WHERE actif =  1
    AND nom LIKE  '%dup'
    AND id NOT 
    IN (
    	SELECT IF(id, id, 0) id
        FROM mc__amis
        WHERE (
        	id_demandeur =  '#A0-2'
            AND id_receveur = id
        ) OR (
        	id_demandeur = id
            AND id_receveur =  '#A0-2'
        )
    )
    LIMIT 0 , 30

    D’ailleurs ce qui est bizarre c'est que même en effectuant cette requête sa me retourne qu'un seul enregistrement:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DISTINCT id, nom, prenom, avatar
    FROM mc__membres
    WHERE actif =  1
    AND nom LIKE  '%dup'
    LIMIT 0 , 30

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Par défaut
    Ah et bien c'est toujours un de mieux alors

    Sur les 3 qui manque, il n'y en a pas un qui a l'id 0 au moins ?

    Ensuite, j'ai du mal à suivre ce que tu souhaites faire ici :

    id_demandeur = '#A0-2'
    AND id_receveur = id

    ainsi qu'ici :

    id_demandeur = id
    AND id_receveur = '#A0-2'

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Par défaut
    Citation Envoyé par DevLqncer Voir le message
    D’ailleurs ce qui est bizarre c'est que même en effectuant cette requête sa me retourne qu'un seul enregistrement:
    Ah, je n'osais pas demander, mais du coup je te laisse chercher un peu alors

    PS : le IF dans le select imbriqué est valable aussi pour ta toute première requête.... sauf qu'il me semble qu'elle doit être plus gourmande que celle que je t'ai proposé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD17] Table dans table dans table je pense ?!
    Par franck34matlab dans le forum WinDev
    Réponses: 8
    Dernier message: 08/07/2014, 14h06
  2. alter table (erreur 150)
    Par King_T dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/05/2006, 20h11
  3. Importation avec generation de table erreur
    Par uloaccess dans le forum Access
    Réponses: 7
    Dernier message: 28/11/2005, 18h32
  4. [XSL-FO] Table avec cellule vide
    Par JustAGphy dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 12/05/2004, 14h11
  5. Fusion de lignes de tables en éliminant les redondances
    Par MinsK dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 22/04/2004, 09h21

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