2010-05-26 15 views
7

Benzer sütunları olan mysql'de iki tablo varsa ...MySQL'de iki tablodan SELECT ve sütunları birleştirmek mümkün mü?

TABLEA 
    id 
    name 
    somefield1 

TABLEB 
    id 
    name 
    somefield1 
    somefield2 

SELECT deyimini, her iki tablonun aynı anda SELECT işlemini yapabilmeleri için nasıl yapılandırabilirim? aynısı?

Örneğin,

SELECT name, somefield1 FROM TABLEA, TABLEB WHERE name="mooseburgers"; 

... gibi bir şey yapmayı umuyordum ve her iki tablonun ismini ve somefield1 sütunlarını sonuç kümesinde birleştirdik.

Yardımlarınız için teşekkür ederiz!

Sorunun nedeni belirsiz olduğundan örnek çıktı:

Tablodaki satırları ve tablo2'deki satırları sonuç kümesine eklemek istiyorum. Örneğin, tablolar

TABLEA 
id(1) name(zoot) somefield(suit) 

TABLEB 
id(1) name(zoot) somefield(flute) 

The resultet would look like: 

name  |  somefield1 
zoot   suit 
zoot   flute 
içeriyorsa
+0

"Birleştirme" ile ne demek istiyorsun? Lütfen örnek çıktı verin. – RedFilter

cevap

7

yapabilirsiniz Her iki tablodaki sütunları (kimlik, ad) aşağıdaki ölçütlerle birleştirme ölçütlerini kullanarak birleştirin:

select 
    a.id        as id, 
    a.name        as name, 
    a.somefield1 || ' ' || b.somefied1 as somefield1 
from tablea a, tableb b 
where a.id = b.id 
    and a.name = b.name 
    and b.name = 'mooseburgers'; 

sadece (id) üzerinde katılıp isim ve somefield1 sütunları birleştirmek isterseniz:

select 
    a.id        as id, 
    a.name || ' ' || b.name   as name, 
    a.somefield1 || ' ' || b.somefied1 as somefield1 
from tablea a, tableb b 
where a.id = b.id 
    and b.name = 'mooseburgers'; 

bu şeyler yapmanın oldukça sıradışı bir yoldur itiraf etmeliyim rağmen. Ben sorunuzu yanlış anladın ve sadece iki tablo daha geleneksel bir birliğe istiyorsanız size nedenleri ancak

:-) var galiba böyle bir şey kullanın:

select id, name, somefield1, '' as somefield2 from tablea where name = 'mooseburgers' 
union all 
select id, name, somefield1, somefield2 from tableb where name = 'mooseburgers' 

Bu olmaz satırlarını birleştirin, ancak yalnızca iki sorgudan satırları ekleyin. Yinelenen satırları kaldırmak istiyorsanız, union'u kullanın, ancak çoğaltmanız yoksa veya bunların kaldırılmasını istemiyorsanız, union all genellikle daha verimlidir.


Düzenlemenize dayanarak, gerçek sorgu olacaktır:

select name, somefield1 from tablea where name = 'zoot' 
union all 
select name, somefield1 from tableb where name = 'zoot' 

(veya union Eğer çiftleri a.name==b.name=='zoot' ve a.somefield1==b.somefield1 istemiyorsanız).

+0

Teşekkür ederim. Üzgünüm, sorumu açık değilse. Evet, sadece iki tablodan satırları eklemek istiyorum. Tablo1'deki somefield1 ve Table2'den somefield1'in her ikisinin de sonuç kümesindeki tek sütun somefield 1'in altında olduğundan emin olun. – Travis

2

Sana birleştirme ile ne demek emin değilim ama sonuç UNION edebilirsiniz:

SELECT id, name, somefield1 FROM TABLEA WHERE name="mooseburgers" 
union all 
SELECT id, name, somefield1 FROM TABLEB WHERE name="mooseburgers"; 
0

belki demek istiyorsun

SELECT tableA.id, tableA.name, tableA.somefield1 
FROM tableA, tableB 
WHERE tableA.name = tableB.name AND tableA.name="mooseburgers" 
0

Birleştirme ile ne demek istediğine bağlı olarak, olası bir çözüm.

Select id,name,somefield1 from TableA 
WHERE Name ='mooseburgers' 
UNION 
Select id,name,somefield1 from TableB 
WHERE Name ='mooseburgers' 

sonuç 1 tabloya birleşti ile hem tablolardan sonuçlarını göstermek için izin verecektir.

İlgili konular