2012-08-13 14 views
16

Bir tablonun tek bir sütunda yalnızca farklı operatörle birden çok sütun seçen bir SQL sorgusu yazmaya çalışıyorum.SQL Tek Bir Sütunda Farklı Kullanarak Birden Çok Sütun Sorguyu Sorgulama

Tablo basittir. sütunlar şunlardır: Ben bunlara karşılık gelen tblFruit_ID tüm tblFruit_FruitType seçmek çalışıyorum

tblFruit_ID, tblFruit_FruitType, tblFruit_FruitName 
int   NVarChar   Text 

.

denedim: Sütun ile

Select tblFruit_FruitType, tblFruit_ID FROM tblFruit Group By tblFruit_FruitType 

-hataları tblFruit_ID Seçim listesinde geçersiz sadece farklı değil

Select Distinct(tblFruit_FruitType), tblFruit_ID FROM tblFruit 

-Returns Sonuçları, ya bir agrega bulunan olmadığından işlev veya GROUP BY cümlesi.

Select tblFruit_FruitType, tblFruit_ID FROM tblFruit Group By tblFruit_FruitType, tblFruit_ID 

-Returns Ben de bu benzer mesajları teslim ve bir şey çalışmak :(Umarım

mySQL select one column DISTINCT, with corresponding other columns

SQL Server Distinct Union for one column

alamadım

sadece farklı değil tüm sonuçlar, Bu bir cevap için yeterli bilgi

Zaman ayırdığınız için teşekkür ederiz!

DÜZENLEME (Örnek veriler ve İstenilen Sonuçları)

tblFruit_ID, tblFruit_FruitType, tblFruit_FruitName 
int   NVarChar   Text 
1   Citrus    Orange 
2   Citrus    Lime 
3   Citrus    Lemon 
4   Seed    Cherry 
5   Seed    Banana 

Sonuçlar:

1   Citrus 
4   Seed 
+0

Mesaj (çok yumuşak ve geribildirim yapıcı olun) örnek veriler ve istenen sonuçlar, lütfen. –

cevap

24
select * from tblFruit where 
tblFruit_ID in (Select max(tblFruit_ID) FROM tblFruit group by tblFruit_FruitType) 
+0

Bu sorgu sonuçlarla doğru satırları döndürür. Neler olduğu hakkında daha fazla açıklama için aşağıdaki cevaba bakınız! – Steve

+0

Aşağıdaki cevap, istenen sonuçları üretmek için de çalışır. – Steve

+0

Teşekkürler! Çok yardımcı oldu – MaxG

17

Sen gruplama edilmeyen karşı sütunlarda bir toplama işlevi kullanmalısınız. Bu örnekte, Min fonksiyonunu keyfi olarak seçtim. Satırları aynı FruitType değeriyle birleştiriyorsunuz. Örneğin, aynı FruitType değeriyle ancak farklı Fruit_Id değerleriyle iki satır varsa, sistem ne yapmalıdır?SQL Fiddle example

+0

Güzel. Bir ton teşekkür ederim. Bu mükemmel çalıştı ve aslında her şeyin ne yaptığını anlıyorum. Keşke bir kere daha oy verebilirdim. – Steve

+0

Not: Bu sorguda Min (tblFruit_id) ve Min (tblFruit_FruitName) farklı satırlardan (farklı meyveler) olabilir – valex

+0

Doğru. Sorgu, istenen aynı sonuçları verir, ancak diğer satırlardan değerleri döndürür. – Steve

0

Select Min(tblFruit_id) As tblFruit_id 
    , tblFruit_FruitType 
From tblFruit 
Group By tblFruit_FruitType 

Aynı yapmak için gerekli ve ben tablodan tüm kimlikleri getirmek için ilk sorgu kurmak

bir sonuç almak için bir sorgu sorgulamak zorunda kaldı ve gerekli tüm diğer bilgileri filtrelemek için:

SELECT tMAIN.tLOTS.NoContract, tMAIN.ID 
FROM tMAIN INNER JOIN tLOTS ON tMAIN.ID = tLOTS.id 
WHERE (((tLOTS.NoContract)=False)); 

Save this Q04_1 olarak -0 bu returne d 1229 sonuçları (sorgulamak için 63 benzersiz kayıtlar vardır - Birden sürü soime)

SELECT DISTINCT ID 
FROM q04_1; 

q04_2 olarak

Sonra kimliği ile bağlantılı gerekli bilgileri getirilen başka bir sorgu yazdığı Kaydedilen

SELECT q04_2.ID, tMAIN.Customer, tMAIN.Category 
FROM q04_2 INNER JOIN tMAIN ON q04_2.ID = tMAIN.ID; 

Bir terapi yaptım ve tam olarak ihtiyacım olanı aldım - 63 benzersiz kayıt müşteri ve kategori ayrıntılarıyla döndü. Hiç çalışarak Grup alamadım gibi ben etrafında nasıl çalıştığını

Bu

- ı weith SQL ziyade "kulaklarının arkasında ıslak" olmama rağmen

İlgili konular