2010-12-12 7 views
0

J'ai deux tables:Joignez-vous à deux tables avec une clé commune dans MySQL

Tableau 1

id app_name app_id 
1 name1 12001 
2 name2 12002 
3 name2 12002 
3 name3 12003 

Et deuxième

Tableau 2

id app_id 
1 22001 
2 22002 
3 12003 
4 22002 

Comment puis-je afficher les données à partir de ces tables pour app_id qui sont les mêmes?

Dans cet exemple SQL correct devrait montrer

name3 12003 

J'ai déjà essayé tous les types de JOIN et aussi select * from table1, table2 where table1.app_id=table2.app_id, mais il semble que je manque quelque chose de simple.


RÉPONSE CORRECTE

symbole Unprintable qui apparaît après la copie de données presse-papiers pour insérer la base de données a conduit à ce problème. Les valeurs de colonne n'étaient pas identiques dans deux tables. Il peut être vérifié en effectuant un vidage SQL et en l'examinant manuellement ou avec un éditeur hexadécimal.

+1

Vous indiquez que vous ne voyez pas ce que vous voulez. Qu'est-ce qui se passe à la place? –

+1

Votre requête fonctionne pour moi. Que montre votre script? –

Répondre

3
SELECT Table1.app_name, Table1.app_id 
FROM Table1 
INNER JOIN Table2 ON Table1.app_id = Table2.app_id 
+0

+1 parce que c'est la réponse correcte car la question est posée, mais si vous remarquez qu'il a déjà essayé cela. Le problème est probable avec sa structure de table. –

+0

@Mark Byers: D'accord. Je l'ai remarqué aussi; C'est pourquoi j'ai demandé des éclaircissements. –

+0

Toujours voir le résultat vide, déjà essayé auparavant. Peut-être, c'est une sorte d'erreur dans un autre domaine, une mauvaise base de données, pas d'ID similaire, mais ne peut pas le trouver en ce moment. –

0

Une jointure interne devrait suffire régulièrement:

select t1.app_name, t1.app_id from table1 t1 inner join table2 t2 on t1.app_id = t2.app_Id 
1

La requête que vous avez affichée devrait fonctionner (bien que je recommande fortement que vous utilisez le mot clé join plutôt que la syntaxe des virgules).

Je pense que votre problème est que vos tables n'ont pas été créés correctement. Utilisez les commandes suivantes pour déboguer le problème - et accorder une attention particulière aux types de données:

SHOW CREATE TABLE table1; 
SHOW CREATE TABLE table2; 

Vous pouvez également vérifier que la ligne que vous attendez dans le jeu de résultats n'existent réellement dans les deux tableaux:

SELECT * FROM table1 WHERE app_id = '12003'; 
SELECT * FROM table2 WHERE app_id = '12003';