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
requête qui ne fonctionne pas [ par tif27940 ]
Bonjour, voila j'ai une requête qui doit m'afficher les contacts de la table contact qui ne sont pas dans la table dossier avec une date d'ouverture
Petite erreur de syntaxe SQL difficilement décelable [ par hgus ]
Bonsoir, Je viens vers vous car je n'arrive pas à trouver ce petit bug bien gênant : Sur un forum phpBB 3.0.9, j'ai installé un Mod, une shoutbox
Plusieurs colonnes ou plusieurs tables ? [ par hotmaskim ]
Bonjour, J'ai une table qui va servir à remplacer un fichier XML faisant un mapping entre un id source et un id destination. Maintenant, l'id sourc
sql:insertion dans 2 tables liées [ par ti7a ]
Bonjour, slt tt le monde bon j'ai deux tables : la table voiture (id_voiture,id_marque ,couleur,ville.............); et la table option (id_option,
Problème création table en SQL Server [ par anouar2002 ]
Salut !!! Je veux faire une création de certains tables en SQL Server 2005, il y a toujours un erreur concernant les clés étrangers je suppose qui me
Problème création table avec Netbeans [ par marwen109 ]
Bonsoir, j'ai un problème lors de la création de cette table , netbeans m'affiche : [code=autre]Code erreur -1, état SQL 42X01: Erreur de syntaxe :
Aide pour sql [ par romdeljesus ]
Bonjour, j'ai essaye de crayer une base de donnees contenant 2 tables sur netbeans 7.01. je cree une premiere table contenant l'entier id comme cle p
selectionner la derniére entrée d'une table [ par Plum59 ]
Bonjour , la communauté, je débute en programmation php java et mysql, car l'idée de mettre en ligne mon site web me trotte dans la tête depuis un pti
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
BESOIN D'UN BIBESOIN D'UN BI par michimichid
Cliquez pour lire la suite par michimichid
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|