Accueil > Forum > > > > Problème de requêtes imbriquées
Problème de requêtes imbriquées
mardi 17 mars 2009 à 19:48:18 |
Problème de requêtes imbriquées

sebshiva
|
Bonjour, Malgré plusieurs heures de recherche, je ne trouve pas comment faire fonctionner cette requête mysql... SELECT tel.tel_tel, tel.type_tel, adresse.nom_adresse, adresse.ville_adresse FROM tel,adresse WHERE (tel.id_contact OR adresse.id_contact) IN (SELECT contact.id_contact,contact.nom_contact, contact.prenom_contact FROM contact where nom_contact LIKE "%'.$_POST['nom'].'%" OR prenom_contact like "%'.$_POST['nom'].'%") L'erreur est la suivante : Warning : Operand should contain 1 column(s) Je comprend le message d'erreur mais j'ai aussi essayer une jointure entre la table adresse et la table tel, rien y fait... Je me rend compte de graves lacunes en SQL...  J'ai essayé plein de combinaisons... sans résultat.. à part d'autres messages d'erreur... Les tables : une table contact, avec une clé primaire id_contact (et un champs nom etc..), une table adresse avec un champ id_contact (pour une clé externe et un champ ville etc..) un contact pouvant avoir plusieurs adresse et une table tel avec également un champ id_contact (pour une clé externe et un champs type genre domicile etc...), un contact pouvant avoir plusieurs téléphones, adresses... Le but étant de récupérer dans un tableau toutes ces informations sans avoir de "doublons" dans ce tableau (pas autant de ligne pour un contact que de téléphone par ex.) J'espère avoir été sufisement clair... Merci pour vos lumières, là, j'y vois plus rien.
|
|
jeudi 19 mars 2009 à 15:16:19 |
Re : Problème de requêtes imbriquées

crn_c21
|
L'erreur est "normale", tu demande que idcontact soit dans un résultat de requete avec idcontact, nom_contact et prenom_contact!!
WHERE (tel.id_contact OR adresse.id_contact) IN (SELECT contact.id_contact FROM contact where nom_contact LIKE "%'.$_POST['nom'].'%" OR prenom_contact like "%'.$_POST['nom'].'%")
|
|
jeudi 19 mars 2009 à 15:40:38 |
Re : Problème de requêtes imbriquées

sebshiva
|
Merci de me répondre! Mais le problème est que j'ai besoin que ressorte aussi nom_contact & prenom_contact... Le tout étant d'éviter de faire des requêtes dans une boucle exploitant ma première requête (pour les nom_contact notamment...) J'espère être clair... Depuis, on m'a dit que ce n'était pas possible... tout simplement... Et du coup, je m'oriente sue une requête du genre : SELECT contact.id_contact, contact.nom_contact,contact.prenom_contact,contact.anniversaire_contact, tel.tel_tel, tel.type_tel, addresse.ville_adresse FROM contact ctc LEFT JOIN tel tels ON tel.contact_id = ctc.contact_id LEFT JOIN adresse addr ON addr.contact_id = ctc.contact_id WHERE contact.nom_contact LIKE \'%'.$_POST['nom'].'%\' OR contact.nom_contact LIKE \'%'.$_POST['prenom'].'%\';
et de ranger ce résultat dans un tableau bien indexé pour ne pas avoir autant de ligne nom_contact que de tel par ex...
Un avis?
|
|
jeudi 19 mars 2009 à 16:19:15 |
Re : Problème de requêtes imbriquées

sebshiva
|
J'en profite que le post est ouvert...
De mieux en mieux!
SELECT contact.id_contact, contact.nom_contact,contact.prenom_contact,contact.anniversaire_contact, tel.tel_tel, tel.type_tel, addresse.ville_adresse FROM contact ctc LEFT JOIN tel tels ON tel.id_contact = ctc.id_contact LEFT JOIN adresse addr ON addr.id_contact = ctc.id_contact WHERE contact.nom_contact LIKE \'%'.$_POST['nom'].'%\' OR contact.nom_contact LIKE \'%'.$_POST['prenom'].'%\';
me donne, je site:
Unknown column 'contact.id_contact' in 'field list'...
Alors que id_contact existe bien...
Je jure pourtant solennellement que je n'ai jamais parlé de MySQL en mal... Pourquoi tant de haine?... o_O
|
|
jeudi 19 mars 2009 à 20:17:35 |
Re : Problème de requêtes imbriquées

crn_c21
|
L'erreur est toujours normale lol!!
Contact.Id_Contact n'existe pas!!
Normal tu as dis que contact s'appelait ctc!!
Donc ctc.id_contact lui existe !!
Existe-t-il un lien entre le Id_COntact de tel et le Id_Contact de Adresse?
Autre question tu desire sortir le nom et prénom contact; mais si ce contact à plusieurs Tel ou pkusieurs adresse tu veux afficher quoi?
|
|
jeudi 19 mars 2009 à 20:27:20 |
Re : Problème de requêtes imbriquées

sebshiva
|
Bonsoir, ma requête à bougé depuis... J'attends que tout fonctionne pour poster ma solution...
Voici ou j'en suis:
SELECT contact.id_contact, contact.nom_contact, contact.prenom_contact, contact.anniversaire_contact, tel.tel_tel, tel.type_tel, adresse.nom_adresse, adresse.ville_adresse FROM contact LEFT JOIN tel ON (tel.id_contact = contact.id_contact) LEFT JOIN adresse ON (adresse.id_contact = contact.id_contact) WHERE contact.nom_contact LIKE \'%'.$_POST['find'].'%\' OR contact.prenom_contact LIKE \'%'.$_POST['find'].'%\';
et pour répondre à ta question si mon contact a plusieurs tels, je ne veux pas qu'il ressorte autant de fois que de tel, une fois suffit! Pour se faire, j'essaie de rentrer tout ça dans un tableau multidimensionnel bien indexé...
J'ai de grosses lacunes en sql (ça se voit), merci en tout cas de t'intéresser à mon problème!
|
|
vendredi 20 mars 2009 à 10:04:19 |
Re : Problème de requêtes imbriquées

crn_c21
|
essaye ca :
SELECT contact.id_contact, contact.nom_contact, contact.prenom_contact, contact.anniversaire_contact, tel.tel_tel, tel.type_tel, adresse.nom_adresse, adresse.ville_adresse FROM contact LEFT OUTER JOIN (SELECT TOP 1 id_contact,tel_tel,type_tel FROM Tel) As Tel ON Tel.Id_Contact=Contact.Id_Contact LEFT OUTER JOIN (SELECT TOP 1 Id_Contact,nom_adresse,ville_adresse FROM Adresse)AS Adresse ON Adresse.Id_Contact=Contact.Id_Contact WHERE contact.nom_contact LIKE \'%'.$_POST['find'].'%\' OR contact.prenom_contact LIKE \'%'.$_POST['find'].'%\';
|
|
vendredi 20 mars 2009 à 11:04:04 |
Re : Problème de requêtes imbriquées

sebshiva
|
Salut!
Merci pour cette nouvelle réponse! J'ai essayé... voila:
Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1 id_contact,tel_tel,type_tel FROM Tel) As Tel ON Tel.Id_Contact=Contact.Id_Cont' at line 3' in /home/seb/www/...
J'ai remarqué des majuscules pour Contact... Je les ai enlevées, mais pas pour les as qui (je comprends bien) sont volontaires. ça donne :
SELECT contact.id_contact, contact.nom_contact, contact.prenom_contact, contact.anniversaire_contact, tel.tel_tel, tel.type_tel, adresse.nom_adresse, adresse.ville_adresse FROM contact LEFT OUTER JOIN (SELECT TOP 1 id_contact,tel_tel,type_tel FROM tel) as Tel ON (Tel.id_contact=contact.id_contact) LEFT OUTER JOIN (SELECT TOP 1 id_contact,nom_adresse,ville_adresse FROM adresse) as Adresse ON (Adresse.id_contact=contact.id_contact) WHERE contact.nom_contact LIKE \'%'.$_POST['find'].'%\' OR contact.prenom_contact LIKE \'%'.$_POST['find'].'%\';
resultat : la même chose...
Mais je pense qu'il y a une erreur sur la manière de récupérer les infos, parce que si je comprends bien, on va récupérer de cette manière que le premier tel et que la première adresse... alors que je souhaite le contraire, une fois le contact et tous ces tel et adresse... Désolé si je n'ai pas compris... J'apprends... Merci de m'expliquer si je me trompe dans la lecture de cette nouvelle requête ;)
PS, ça n'a (j'espère) peut-être rien à voir, mais c'est via PDO que j'exécute mes requêtes... (oui, j'apprends beaucoup de choses en même temps...)
Merci encore
|
|
vendredi 20 mars 2009 à 11:13:23 |
Re : Problème de requêtes imbriquées

crn_c21
|
J'ai du mal a suivre !!
TU peux ebaucher le tableau que tu veux récupérer?
|
|
vendredi 20 mars 2009 à 11:28:49 |
Re : Problème de requêtes imbriquées
|
Cette discussion est classée dans : table, erreur, id, adresse, contact
Répondre à ce message
Sujets en rapport avec ce message
Insertion [ par le_totophe ]
Bonjour à tous, je voudrais gérer des contacts au sein d'une base de données qui comporte (schématiquement) une table avec un champ contact_id auto-in
erreur creation de champs [ par georgesm ]
Bonjour,j'ai une base sur Mysql avec plusieurs table. Mon problème est le suivant:Une des tables refuse l'enregistrement de nouvelles données à partir
update avec jointure [ par jesscolor ]
Bonjour,j'ai un problème que je suis sure est simple mais j'ai cherché des solutions partout sur internet mais rien ne marche. En effet, je fais rempl
erreur : a foreign key constraint fails !!!! [ par vinz78 ]
-- phpMyAdmin SQL Dump-- version 2.10.1-- http://www.phpmyadmin.net-- -- Serveur: localhost-- Généré le : Jeu 21 Juin 2007 à 10:53-- Version du serveu
Inserer des données [ par JALEO WAHRANI ]
Bonjour à tous,je souhaiterais inserer des données dans 2 tables à la fois.On a d'un côté la table t_personnes(id, nom, prenom, no_insee)et de l'a
Choix de valeur par défault n+1 [ par Billybobbonnet ]
Bonjour à tous!Premier message sur ce forum et je vous salue tous à cette occasion.J'ai une BDD mySQL dans laquelle j'ai une table qui répertorie des
table avec des cle secondaire [ par val_lala ]
Bonjour,Voila j'ai crée des tables nikel avec des cle secondaire (c'est tout neuf pour moi, mais je comprend bien le fonctionnement de ces clés)Par co
Dépendance de tables SQL [ par toutgreg ]
Bonjour, Je suis entrain de faire l'architecture de ma base SQL et je bloque sur une dépendance de table. Pour résumer, j'ai 3 tables et je cherche à
parcourir une table en T-sql [ par ninini2008 ]
Bonjourje suis en stage et je veux parcourir une table qui contien deux colonne ID_MACHINE1 et ID_MACHINE2 , j'ai recupéré les deux ID à partir d'autr
Livres en rapport
|
Derniers Blogs
COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
MYSQLSERVERMYSQLSERVER par favella
Cliquez pour lire la suite par favella
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|