web-dev-qa-db-fra.com

Mysql choisissant parmi deux tables

Quelqu'un peut-il me dire comment sélectionner des données à partir de deux tables sans avoir à utiliser join?

Quelque chose comme ça:

SELECT t1.*, 
       t2.*
  FROM table1 t1, 
       table2 t2

Clarification

J'ai ces deux tables, qui ont les mêmes champs. IE: table1 contient des données de 2011 et table2 contient des données de 2012. Je veux toutes les obtenir. 

Plus de précisions:

Le jeu de résultats souhaité peut être produit par:

(SELECT tr.full_name,tr.headlines,tr.content,tr.stamp,tr.person_key 
 FROM tbl_transactions tr
 JOIN persons p ON p.person_key = tr.person_key 
 JOIN teams t ON (pp.membership_id = t.id and pp.membership_type = 'teams') 
 WHERE t.team_key = '') 
UNION 
(SELECT tr.full_name,tr.headlines,tr.content,tr.stamp,tr.person_key 
 FROM tbl_transactions_bk_2012 tr 
 JOIN persons p ON p.person_key = tr.person_key 
 JOIN teams t ON (pp.membership_id = t.id and pp.membership_type = 'teams') 
 WHERE t.team_key = '')

et le PO souhaite voir s'il existe d'autres moyens d'accélérer le processus ("J'ai essayé d'utiliser UNION entre ces requêtes. mais la vitesse de la requête a pris 0,1887 seconde. c'est un peu lent.")

(@Jetoox: si ce n'est pas votre intention, éditez votre question et clarifiez).

12
Jetoox

Il suffit de mettre la condition de jointure dans la clause WHERE:

SELECT t1.*, t2.*
FROM table1 t1, table2 t2
WHERE t1.id = t2.t1_id

C'est une jointure intérieure, cependant.

METTRE À JOUR

En examinant vos questions: Dans ce cas particulier, il n’ya pas de relation entre tbl_transactions et tbl_transactions_bk_2012 (c’est-à-dire que les joindre sur person_key n'a pas de sens car il n’ya pas de relation entre les deux tables de la manière (disons) que tbl_transactions et person sont liées).

Ensuite, vous devriez utiliser l'approche UNION. Essayer de joindre la première requête à la seconde en utilisant JOIN ou FROM xx, yy WHERE xx.id=yy.id n'a pas de sens et ne vous donnera pas les résultats dont vous avez besoin.

En passant, dans le futur, placez votre requête/tentative actuelle dans votre message - comme vous pouvez le constater, cela vous empêchera d'obtenir des réponses inappropriées pour votre question (comme ce fut le cas pour ma première tentative).

24
mathematical.coffee

Vous voulez UNION .

10
select t1.*, t2.* from table1 t1, table2 t2
where t1.fkey = t2.pkey
2
silly
select t1.* , t2.*
from t1, t2 where t1.id=t2.id;
2
jyotiprakash

Lorsque vous utilisez la requête UNION, vous pouvez également ajouter des index aux colonnes que vous utilisez pour joindre et filtrer, ce qui améliorera les performances

0