Champ: 'id_connexion' dans field list est ambigu

Résolu
caro__48 Messages postés 264 Statut Membre -  
caro__48 Messages postés 264 Statut Membre -
Bonjour,

J'ai un problème avec une requete sql que je n'arrive pas a régler, du coup j'ai besoin d'aide. J'ai deux tables une chat et l'autre connexion avec id_connexion en commun.

Grâce à cette requete je veux afficher les infos de "chat" qui dispose seulement de "id_connexion" (table connexion) car mes pages sont sécurisées.

Voici ma requete:
//récupère l'id_connexion de l'utilisateur connecté.
$nom_personne = $_SESSION['nom'];

//requete
$affichage = mysql_query ("SELECT id_chat, destinataire, pseudo, message, date, id_connexion FROM chat, connexion Where connexion.id_connexion = chat.id_connexion AND ( cast(date_format(date, '%d') as signed) = ".date("d")." or cast(date_format(date, '%d') as signed) = ".(date ("d")+1).") AND (SELECT id_connexion, Nom_utilisateur From connexion Where id_connexion = '.$nom_personne.') ") or die (mysql_error());

Mais j'ai une erreur. Il me dit que le champs id_connexion est ambigu.

Du coup j'ai refait ma requete avec des INNER JOINT (en sachant que j'ai toujours eu bcp de mal avec ces bêtes là :) )
$affichage=mysql_query("
select a.Nom_utilisateur as Nom_utilisateur,
a.id_connexion as id_connexion,
c1.destinataire as destinataire,
c1.pseudo as pseudo,
c1.message as message,
c1.date as date,
C2.id_chat as id_chat
from
chat c1 inner join (select max(c.id_chat) as id_chat
from chat c
group by c.id_connexion) as c2 on c1.id_chat = c2.id_chat
right outer join connexion a on a.id_connexion = c1.id_connexion where (cast(date_format(date, '%d') as signed) = ".date("d")." or cast(date_format(date, '%d') as signed) = ".(date ("d")+1).") AND (SELECT id_connexion, Nom_utilisateur From connexion Where id_connexion = '.$nom_personne.')") or die (mysql_error())

et la nouvelle erreur:
Operand should contain 1 column(s)

Si quelqu'un pouvait m'aider à corriger l'une ou l'autre des requetes je vous en serai vraiment reconnaissante car la pour le coup je rame sec :)

Merci

2 réponses

  1. Thorak83 Messages postés 1140 Statut Membre 156
     
    Bonjour,

    alors pour la 1ère partie de la requête SQL je verrais ceci
    SELECT 
     CH.id_chat, 
     CH.destinataire, 
     CH.pseudo, 
     CH.message, 
     CH.date, 
     CH.id_connexion 
    FROM chat as CH
    INNER JOIN connexion as CN
    ON CH.id_connexion = CN.id_connexion

    ca c'est pour lier les 2 tables et n'avoir que les lignes de "chat" qui se trouve dans "connexion" avec id_connexion en commun

    pour la 2ème partie, je comprend un peu moins l'histoire du (SELECT id_connexion, Nom_utilisateur From connexion Where id_connexion = '.$nom_personne.') pourquoi ne pas mettre CH.id_connexion =

    Ensuite id_connexion n'est pas en numérique ?

    Cordialement
    0
    1. caro__48 Messages postés 264 Statut Membre 61
       
      la requete marche impec, faut juste que j'arrive a définir que je souhaite afficher les infos de la table chat qui correspondent à l'id_connexion qui est en train de se servir du service, donc qui c'est connecté.
      0
    2. Thorak83 Messages postés 1140 Statut Membre 156
       
      CH.id_connexion = id_de_le_personne_connectée
      0
    3. caro__48 Messages postés 264 Statut Membre 61
       
      C'est bon j'ai trouvé

      Merci beaucoup pour ton aide, tu ma sortie une bonne épine du pied!!
      ET voila la requete finie!
      $affichage=mysql_query("SELECT
      CH.id_chat,
      CH.destinataire,
      CH.pseudo,
      CH.message,
      CH.date,
      CH.id_connexion
      FROM chat as CH
      INNER JOIN connexion as CN
      ON CH.id_connexion = CN.id_connexion
      WHERE (cast(date_format(date, '%d') as signed) = ".date("d")." or cast(date_format(date, '%d') as signed) = ".(date ("d")+1).") AND destinataire = $nom_personne") or die (mysql_error());

      Pourquoi faire compliqué quand on peut faire plus simple :)
      Merci
      0
  2. caro__48 Messages postés 264 Statut Membre 61
     
    si l'id_connexion est en numérique, mais en fait à l'affichage je veux que ça m'affiche que les messages qui correspondent à l'id_connexion qui est "connecté" en ce moment.

    C'est pour ça que je récupère l'id de la Session et que je le compare à celui de ma table.

    Je suis pas sure d'être très claire...
    Je vais essayer tes modifs!
    0
    1. Thorak83 Messages postés 1140 Statut Membre 156
       
      je pense que cette partie donc ne sert à rien. La jointure est la pour cela
      0