Seite 1 von 1

[gelöst]doppelte Einträge in einer Spalte

Verfasst: Sa, 23.11.2013 01:24
von marc 70
nabend,

komme alleine leider nicht weiter....

folgendes Beispiel einer Tabelle.
eins.jpg
eins.jpg (28.43 KiB) 1527 mal betrachtet

Code: Alles auswählen

SELECT "FarbeID", "Preis", "mass1", "mass2", "Farbe" 
FROM "Tabelle1" WHERE ( "mass1" > x AND "mass2" > y )

ist z.B. x=85 und y=85 dann bleiben nur 3 Zeilen übrig (1,3,6)--> alles gut so
ist z.B. x=60 und y=60 dann ist die Ausgabe wie oben (rot und blau ist doppelt) --> zeile 1 und 3 sollen aber weg
(denn die Farbe gibt es ja auch kleiner)

Die "FarbID" kann man zum vergleichen heranziehen( die ersten 5 zahlen ergeben immer die Farbe)

Code: Alles auswählen

SELECT MIN( "Preis" ), LEFT( "FarbeID", 5 ) as "FarbKey" 
FROM "Tabelle1" GROUP BY LEFT( "FarbeID", 5 )
mit Code 2 gibt es keine doppelten Farben mehr und auch die Richtgen bleiben übrig.
blos die anderen spalten sind dann weg und das mass wird auch nicht mehr berücksichtigt.
doub.jpg
doub.jpg (7.35 KiB) 1527 mal betrachtet
Wie kann man beides kombinieren?

besten Dank im voraus
Gruß marc

AOO 4.0.1
HSQL

Re: doppelte Einträge in einer Spalte

Verfasst: Sa, 23.11.2013 09:52
von RobertG
Hallo Marc,

das Ganze funktioniert natürlich nur dann, wenn Du die Variablen x und y auch in der zweite Abfrage einbaust. Dann erhältst Du übereinstimmende Werte. Du könntest jetzt die Variablen über eine gesonderte Tabelle mit einem Datensatz einlesen lassen. Dann beeinflusst Du sie in beiden Abfragen gleichzeitig und kannst die eine auch als Grundlage für die andere nutzen.

Gruß

Robert

Re: doppelte Einträge in einer Spalte

Verfasst: Sa, 23.11.2013 10:14
von F3K Total
Hi,
indem du der ersten Abfrage eine Spalte hinzufügst:

Code: Alles auswählen

SELECT "FarbeID", "Preis", "mass1", "mass2", "Farbe", LEFT( "FarbeID", 5 ) as "FarbKey" FROM "Tabelle1" WHERE ( "mass1" > 85 AND "mass2" > 85 )
Und dann eine dritte Abfrage schreibst, in der die beiden ersten kombiniert werden:

Code: Alles auswählen

SELECT "Abfrage".* FROM "Duplikate", "Abfrage" WHERE "Duplikate"."FarbKey" = "Abfrage"."FarbKey"
Das läßt sich durch Substitution von Duplikate in einer Abfrage zusammenfassen:

Code: Alles auswählen

SELECT 
    "Abfrage".* 
FROM 
    (SELECT 
         MIN( "Preis" ),
         LEFT( "FarbeID", 5 ) AS "FarbKey" 
    FROM
        "Tabelle1" 
     GROUP BY 
          LEFT( "FarbeID", 5 )) 
    AS "Duplikate", 
   "Abfrage" 
WHERE 
"Duplikate"."FarbKey" = "Abfrage"."FarbKey"
Gruß R

Re: doppelte Einträge in einer Spalte

Verfasst: Sa, 23.11.2013 13:42
von marc 70
Hallo,

danke euch beiden für die schnelle Hilfe.

geht so wunderbar. :D

Code: Alles auswählen

SELECT "Tabelle1"."FarbeID", "Tabelle1"."Preis", "Tabelle1"."mass1", "Tabelle1"."mass2", "Tabelle1"."Farbe" 
FROM ( SELECT MIN( "Preis" ) AS "MPreis", LEFT( "FarbeID", 5 ) AS "FarbKey" FROM "Tabelle1" WHERE "mass1" > 66 AND "mass2" > 66 GROUP BY LEFT( "FarbeID", 5 ) ) "Duplikate", "Tabelle1" 
WHERE "Tabelle1"."Preis" = "Duplikate"."MPreis" 
AND "Tabelle1"."mass1" > 66 
AND "Tabelle1"."mass2" > 66 
AND "Duplikate"."FarbKey" = LEFT( "Tabelle1"."FarbeID", 5 )
Gruß marc