2008-10-07 7 views
1

J'ai 2 tables. La table 1 comporte les champs A, B, C, D et Table2 avec les champs A, B. Les champs A et B des deux tables ont le même type d'enregistrement. Je voudrais saisir les enregistrements des deux tables des champs A et B comme résultat unique.Récupérer des lignes de plusieurs tables comme résultat unique?

Existe-t-il une requête ou une fonction dans PHP + MySQL?

Merci ...

Répondre

7

Je suppose que le fait MySql:

select a, b de table1 où your_criteria = test_value union select a, b de table2 où your_criteria = test_value

8

Il y a une clause d'union dans SQL qui fait ce que vous voulez:

select a,b from table1 
    where <where-clause> 
union all select a,b from table2 
    where <where-clause> 

ou, si vous voulez tous les champs (espaces pour table2):

select a,b,c,d from table1 
    where <where-clause> 
union all select a,b,' ' as c,' ' as d from table2 
    where <where-clause> 

Les espaces dans la seconde requête peuvent devoir être élargi pour adapter la taille des champs pour c et d.

+0

Merci pour votre réponse utile. Si je peux, je veux accepter les trois réponses ... :) –

5

solution Union confirmée dans la version MySQL Server: 5.0.51a-3ubuntu5.1 (Ubuntu)

create database foo; 
create table bill(a int, b varchar(10)); 
create table ted(a int, b varchar(10), c datetime, d boolean); 
insert into bill values (10, 'foo'), (20, 'bar'); 
insert into ted values (5, 'splot', now(), true), (10, 'splodge', now(), false); 
select a,b from bill where a<=10 union select a,b from ted where a<=10; 
+------+---------+ 
| a | b  | 
+------+---------+ 
| 10 | foo  | 
| 5 | splot | 
| 10 | splodge | 
+------+---------+ 
+0

Merci. Votre réponse m'a vraiment aidé ... –

Questions connexes