2011-11-28 6 views
2

Je suis un débutant à MySQL et je vais avoir du mal à essayer de comprendre comment résoudre ce problème:Sélectionner les colonnes multiples dans plusieurs tables

J'ai deux tables avec de nombreuses entrées chacun. Disons que ce sont les tables:

Table 1  ||   Table 2 
------------- || ------------------- 
| dt1 | dt2 | || | dt3 | dt4 | dt5 | 
------------- || ------------------- 
| 1 | abc | || | 3 | wsx | 123 | 
| 7 | asd | || | 3 | qax | 456 | 
| 19 | zxc | || | 4 | rfv | 789 | 
------------- || ------------------- 

Ce que je veux faire est d'avoir à la suite d'une table avec des colonnes « DT2 », « dt4 » et « dt5 » et avec une seule entrée. Pour cela, la requête que je vais appliquer à chaque table peut même avoir à LIMITER les résultats. Pour obtenir les résultats que je veux de chaque table separetelly je voudrais faire ce qui suit:

SELECT `dt2` FROM `table1` WHERE `dt1`=7; 

et

SELECT `dt4`,`dt5` FROM `table2` WHERE `dt3`=3 LIMIT 0,1; 

une chose, je ne veux pas utiliser un sous-requête pour chaque colonne, parce que dans la vraie chose que j'essaie de résoudre, j'appelle 5 ou 6 colonnes de chaque table.

Juste pour faire clair, ce que je veux faire quelque chose comme ceci:

------------------- 
| dt2 | dt4 | dt5 | 
------------------- 
| asd | qax | 456 | 
------------------- 
+1

Ce qui manque est la relation entre les enregistrements dans les deux tables. Est-ce qu'il y a un? En d'autres termes, pour un enregistrement donné dans le tableau 1, avec quel enregistrement dans le tableau 2 doit-il être apparié? –

+0

Comme je l'ai dit, il n'y aura qu'un résultat de chaque table et un seul résultat à la fin. Donc ce qui sera apparié est la réponse de la requête que je fais dans chaque table. – hbmuller

+0

cela n'a pas grand sens. Examinez simplement les deux tables par deux requêtes et générez vous-même le résultat dans le langage d'enveloppement (par exemple, PHP). Tout le reste est comme gratter votre oreille droite avec la main gauche. – TMS

Répondre

8
SELECT a.dt2, b.dt4, b.dt5 
FROM table1 a, table2 b 
WHERE a.dt2 = 'asd' 
LIMIT 0,1; 
+0

Mais qu'en est-il de la recherche dans la deuxième table? – hbmuller

+0

cette requête utilise 2 tables, table1 et table2 .... s'il vous plaît être plus spécifique s'il y a un problème avec cette requête. – Ben

0

La réponse de Ben a résolu mon problème similaire.

SELECT t1.dt2, t2.dt4, t2.dt5, t2.dt3 #GET DT3 données de table_2

de table1 t1, t2 table_2

OÙ t1.dt2 = 'asd' et t2 .dt4 = 'qax' ET t2.dt5 = 456

| asd | qax | 456 | 3 |

'3' étant les données dont j'ai besoin en interrogeant le 'qax', 456 données dans la table2, sinon vous spécifiez exactement quelles données seront retournées à partir des colonnes. Je n'avais que 2 tables à interroger dans mon exemple, donc l'expression AND je peux m'en tirer avec, ce n'est probablement pas la meilleure pratique et il y a probablement un meilleur moyen de faire correspondre les données de plusieurs tables.

EDIT: Je viens de réaliser que cette question a 5 ans .. J'espère que vous avez réalisé ce que vous vouliez faire maintenant.

1
SELECT a.dt2, b.dt4, b.dt5 

à partir de Table1 a, b table_2 OÙ a.dt2 = 'asd' LIMITE 0,1;

La réponse de Ben est bonne, vous pouvez utiliser plusieurs tables simplement en les séparant par une virgule (,), mais s'il y a relation entre ces tables, vous devez utiliser certains Sub Query ou JOIN

Questions connexes