2016-12-13 4 views
0

In meiner Tabelle INVENTORY gibt es 3 Spalten varchar Code, Version, Beschreibung. zWählen Sie Datensätze mit dem gleichen Wert in einer Spalte und anderen in

code || version || description 
-------------------------- 
AS100 || 01 || description 
AS100 || 02 || description 
AS100 || 02 || description 
AS100 || 02 || description 
AS200 || 01 || description 
AS300 || 01 || description 
AS300 || 01 || description 

Ich möchte all jene Produkte auszuwählen, die das gleiche Produkt und mehrere Versionen haben. In der obigen Tabelle, diese Abfrage würde zurückgegeben:

AS100 - 01 - description
AS100-02 - description

Ich versuchte HAVING Aussage zu verwenden, aber ich habe nicht das obige Ergebnis ..

Zum Beispiel habe ich versucht, dies:

SELECT code, version, Count(*) FROM INVENTORY 
GROUP BY version 
HAVING Count(*) =1 

, aber es gibt alle Codes zurück, die einmal vorkommen.

Ich habe ein SQLFIDDLE hier (ich hoffe, es spielt, manchmal die Seite gefriert) Eine kleine Dump meiner DB

CREATE TABLE "INVENTORY" (
    "code" VARCHAR, 
    "version" VARCHAR, 
    "description" VARCHAR 
) 


INSERT INTO INVENTORY (code, version, description) VALUES("AS100", "01", "description"); 
INSERT INTO INVENTORY (code, version, description) VALUES("AS100", "02", "description"); 
INSERT INTO INVENTORY (code, version, description) VALUES("AS100", "02", "description"); 
INSERT INTO INVENTORY (code, version, description) VALUES("AS100", "02", "description"); 
INSERT INTO INVENTORY (code, version, description) VALUES("AS200", "02", "description"); 
INSERT INTO INVENTORY (code, version, description) VALUES("AS300", "01", "description"); 
INSERT INTO INVENTORY (code, version, description) VALUES("AS300", "01", "description"); 
+1

können Sie die von Ihnen verwendete Abfrage posten? –

+0

Bitte fügen Sie eine '.dump' dieser Tabelle hinzu, damit wird es einfacher damit zu spielen. –

+0

@kiner_shah Ich habe versucht, die Lösungen von hier http://StackOverflow.com/Questions/2456747/Sqlite-Get-Records-with-Same-Column-value mit verschiedenen Möglichkeiten. – yaylitzis

Antwort

1

Vielleicht ist dies, was Sie wollen?

select *, count(*) from (select * from INVENTORY group by code, version) 
group by code 
having count(*)>1 

Das heißt, zuerst eine Tabelle mit den beiden Spalten von Interesse aggregiert machen, dann die Zeilen aus dieser Tabelle wählen, wo es mindestens zwei verschiedene Werte von Code.

+0

Ihr Ansatz funktioniert für mich! Vielen Dank! – yaylitzis

+0

Sie sind herzlich willkommen. Viel Glück! –

Verwandte Themen