begin process at 2010 03 16 22:36:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Requêtes

 > 

Défit pour un pro


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

Défit pour un pro

lundi 21 janvier 2008 à 23:34:05 | Défit pour un pro

zazadec

Question de se compliquer la vie, je dois reprendre un site avec une bdd déjà existante... bref vous avez compris j'ai pas le choix.

2 tables T1 et T2 avec un 'id' en commun (ces 2 champs 'id' sont en INDEX)
Plusieurs champs (au total 30) dont un dans chaque table qui doit normalement me simplifier la vie, et me virer les enregistrements non voulus (puisque index). Appelons les x et y
Comment relier les 2 select pour ne faire qu'une seule requête.
 SELECT id, x, a, b FROM T1 WHERE x = "";
 SELECT id, y, c, d FROM T2 WHERE y = "";

J'ai essayé
SELECT T1.id, T1.a, T1.b, T2.c, T2.d FROM T1, T2 WHERE T1.id = T2.id AND T1.id = "123" AND T1.x = "" AND T2.y = "" GROUP BY T1.id
Mais il me selectionne a chaque fois le premier champ a, b, c, ou d qu'il rencontre et pas forcement celui correspondant au clause where.

Je doute. Je suis au fond du trou , j'en peux plus. Un peu d'aide ? SVP
Pour vous simplifier la compréhension, je ne vous dit pas que j'ai en fait 3 tables et 30 champs par table.

zazadec
mardi 22 janvier 2008 à 13:13:09 | Re : Défit pour un pro

KenZara

Bonjour,

Je le trouve un peu bizarre ton problème, à priori ta requête te permettra de récupérer (a,b,c et d) se trouvant dans les deux tables T1 et T2 avec l'identifiant de T1 se trouvant dans T2 et qui équivaut 123. Ainsi que x et y qui sont vides. Est ce ce que tu as dans ton résultat? Peux tu nous donner un exemple de tes deux tables et le résultat de ta requête pour mieux visualiser le soucis..

Kenza
mardi 22 janvier 2008 à 23:11:51 | Re : Défit pour un pro

zazadec

Mon problème vient du fait que le premier enregistrement lu est retenu. C'est à dire que mon moteur SQL trouve bien des valeurs pour a b c d mais ce n'est pas celle voulues.
Disons l'exemple suivant
-pour T1 les valeurs suivantes
id01=123, x01=5, a=a01, b=b01,
id11=123, x11=6, a=a11, b=b11,
id21=123, x21='', a=a21, b=b21,
-pour T2 les valeurs suivantes
id02=123, x02=7, c=c02, d=d02,
id12=123, x12=8, c=c12, d=d12,
id22=123, x22='', c=c22, d=d22,

ma requete SELECT T1.id, T1.a, T1.b, T2.c, T2.d FROM T1, T2 WHERE T1.id = T2.id AND T1.id = "123" AND T1.x = "" AND T2.y = "" GROUP BY T1.id affiche le résultat suivant
id=123
a=a01
b=b01
c=c02
d=d02

Comme tu peux le comprendre j'ai essayé de transcrire ma vrai requete. Mais le résultat est là !!!


zazadec
samedi 28 juin 2008 à 00:29:36 | Re : Défit pour un pro

Farfadh

Après vérification, la requête que tu donnes en exemple fonctionne correctement et ne donne pas les résultats que tu nous fournis. Ton problème ne vient pas de sa structure, mais d'un oubli dans ton vrai code, un détail auquel tu n'as pas pensé à priori, ou éventuellement d'un bug de (ta version de) MySQL qui serait incapable de traiter ta requête correctement avec les champs que tu utilises réellement.

La prochaine fois, teste ton exemple avant d'affirmer qu'il se comporte de telle ou telle façon, je perdu du temps à le faire à ta place et je n'apprécie pas du tout.

Si tu cherches encore d'où vient ton problème, envoie-nous un exemple probant.
lundi 30 juin 2008 à 10:43:15 | Re : Défit pour un pro

KenZara

Réponse acceptée !
Bonjour Farfadh

Ce qui m'étonne dans ta réponse, est non seulement sa dureté, mais que la question a été posé 5 mois auparavant! (La question a été posée le 21/01/2008 23:34:05 et ta réponse est le 28/06/2008 00:29:36) Donc j'imagine que la personne a non seulement fini son test, mais il a vachement avancé.

"je perdu du temps à le faire à ta place et je n'apprécie pas du tout." <-- Ok!

Kenza



lundi 30 juin 2008 à 13:25:33 | Re : Défit pour un pro

zazadec

Réponse acceptée !
Merci KenZara pour ton soutien.
En effet vu l'antériorité du post, j'ai un peu avancé, voir je ne me souvenais plus de ce post. Donc à priori j'ai résolu mon pb.
Désolé Farfadth de t'avoir fait perdre ton ton qui a priori était précieux.

De mémoire, j'ai fait plusieurs requetes SQL avec mis en variables des premiers résultats et utilisation de ces variables pour les suivantes.

Merci de t'etre pencher sur mon pb

zazadec


Cette discussion est classée dans : t1, select, id, t2, where


Répondre à ce message

Sujets en rapport avec ce message

Resultat incompréhensible [ par JALEO WAHRANI ] Bonjour, j'ai une base avec 2 tables: 'perso et client', perso a pour colonnes:id, prop, etatétat vaut 'Y' si on effectue un suivi, sinon (par défaut) Requete et jointure [ par jobijobar ] Re-,bon dans un précédent post j'avais partagé avec vous mon horrible requête, pour ceux qui n'ont pas eu le grand malheur de la voir, c'était :SELECT Problème de select multiples dans plusieurs tables [ par superseb801 ] bonjour, J'ai un problème, je voudrais faire une requête sur plusieurs tables en même temps (3 pour être plus précis), et avec d'autres SELECT dans le Optimisation requete [ par citt ] Bonjour,Je suis en train d'optimiser des requêtes et je me demande qu'elle manière et la plus rapide.Voici ma table Optimisation d'une sous-requête SQL [ par Lugdunum2 ] Bonjour, Dans le cadre de l'optimisation des requêtes SQL d'un site web, je me retrouve avec une grande question dont je n'ai pas trouvé de réponse d JOINTURE A UTILISER POUR UN INSERT INTO [ par guivrator ] Bonjour,J'ai crée une base de données dans laquelle j'ai un premier tableau T1 contenant environ 25 champs donc une clé primaire ID. Pour remplir ce t Recherche de texte [ par jobijobar ] Bonjour à tous, j'ai un problème lors de l'execution d'un requete.Table t1 : id, text1, text2, text3, text4, text5Table t2 : id, id2, field1, field2, requete jointure conditionnelle [ par floxone ] Salut, J'ai besoin de faire une requête de ce genre s'il vous plaît : SELECT SUM (v1 * (t2.v2+t2.v3+t3.v4) / v5)FROM table1 t1, table2 t2WHERE t1. Besoin d'aide avec SELECT [ par dlcqty63j ] Bonjour,j'ai une requête : select PARAM, VALEUR, ID_MESURE  from TABLE_MESURE where PARAM='Courant' OR PARAM='Déplacement'order by PARAMETRE, ID_MESUR optimisation de la clause WHERE sur des champs dates [ par ThierH ] Bonjour j'ai une table SQL Server (2005) contenant plus de 50000 lignes. Dans chaque ligne, j'ai des données de type datetime, integer, ... Mon applic


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,373 sec (4)

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