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
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.
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).
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.
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).
Vous voulez UNION
.
select t1.*, t2.* from table1 t1, table2 t2
where t1.fkey = t2.pkey
select t1.* , t2.*
from t1, t2 where t1.id=t2.id;
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