begin process at 2012 02 12 01:15:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Requêtes

 > 

Problème de requêtes imbriquées


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

sebshiva

Tout à fait!

1 2 3

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,458 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales