begin process at 2010 03 20 14:36:25
  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 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

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 : 1,607 sec (4)

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