Doppelte Werte nicht anzeigen : Distinct

Darlis schrieb:
Die Antwort kommt ja sehr schnell und es fehlt das Query, das du verwendet hast.
Ich muss ehrlich sagen, ich kann das für mein Bsp nicht umsetzen.
Code:
select tab1.nr  from tab1 as test1
join tab1 as test2
on (test1.nr=test2.nr)
 
Wie gesagt, wenn du es per JOIN lösen willst, kann ich dir nicht weiterhelfen.
 
Darlis schrieb:
Wie gesagt, wenn du es per JOIN lösen willst, kann ich dir nicht weiterhelfen.
An sich, möchte ich einfach lösen, ob das per join, oder Abfrage wäre.
Hauptsache bekomme ich von tab1 alle Datensätze einmal.
 
Dann schreibe erst mal den (sub-)select, der dir den 1. Eintrag aus der 2. Tabelle mit der ID = 2 holt. Wenn du das geschafft hast, kann man weiter gucken.
 
LauraM schrieb:
Die Seite lädt seit 10 Minuten.

Ich habe so gemacht:

Code:
SELECT 
   T.* 
FROM 
   tab AS T 
WHERE 
   T.nr IN 
      (
         SELECT TOP 1 
            X.nr
         FROM 
           tab AS X 
         WHERE 
            X.nr= T.nr
         ORDER BY 
            X.spalte1)

Es funktioniert, aber bringt mir alle Daten aus tab, also auch Doppelsätze.
Das soll in dem Fall so ausschauen:
SQL:
SELECT *
FROM tab AS T
INNER JOIN (SELECT *, RANK () OVER (PARTITION BY nr ORDER BY spalte1) AS RankValue
               FROM tab2
           ) x
        ON x.nr = T.nr
        AND x.RankValue = 1
 
danke, aber es zeigt, doch mal doppelte Datensätze. Die Ausgangstabelle sieht so aus:

1www
1ggd
2srs
d
2ffhj

2
reh
Und Ergebnis , sage ich wie mit distict soll so aussehen:

1www
2srsd
 
Verzeihung die "es" Abfrage/Ergebnis zeigt doch Doppelsätze, aber auch nicht für jede Datensatz, wie vorher.
Ich glaube, es liegt daran, dass doe Spalte1 ist unterschiedlich bei nr 1 , nr 2 etc.
 
Zuletzt bearbeitet:
Ich wollte damit sagen: Zeig dein Script. Sonst ist das ja nur Rätselraten.
 
Code:
SELECT *
FROM tab1 AS t
INNER JOIN (SELECT *, RANK () OVER (PARTITION BY nr ORDER BY spalte1) AS RankValue
               FROM tab2
           ) x
        ON x.nr = t.nr
        AND x.RankValue = 1

Das ist das, was du oben gepostet hast. Es kommt kein Fehler.
 
Der Code ist nicht von mir und ist eine 1:1 Kopie von Olepoeto und auch nicht so, wie du ihn verwendest. Das wäre ein Grund für Fehler.
Ansonsten, kannst du definitiv ausschließen, dass du nicht auch in Tabelle 1 doppelte Werte in Nr hast? Ist diese Spalte als PRIMARY KEY definiert?
 
Du musst dem Datenbanksystem schon sagen, was es tun soll. Woher soll es wissen, welchen Datensatz du haben möchtest? Indem du ganz genau sagst (alle Kriterien, die den Datensatz dann einzigartig machen), welcher es ist.

edit: Musst du in dem Statement oben nicht nur die weiteren Spalten im ON hinzufügen? Also x.ww = t.ww, x.w = t.w
 
Zuletzt bearbeitet:
du kannst statt RANK auch ROW_NUMBER schreiben, vielleicht hilft das. Ist halt immer noch relativ willkürlich so.
 
Oelepoeto schrieb:
du kannst statt RANK auch ROW_NUMBER schreiben, vielleicht hilft das. Ist halt immer noch relativ willkürlich so.
Es funktioniert mit row.

Ich werde mich am WE noch melden, ich habe hier ein Termin.
ich werde noch mla was fragen, weil es zeigt zwar alles sch´ön- dafür bedanke ich mich sehr!.

Allerdings er zeiht aus der Tabelle einmal der ersten Datensatz zu nr 1, und zu n2 z.B. zweiten und nicht demn ersten.
Also auf dem besipiel con oben zu meine Tabelle habe ich Ergebnis:
1www
2ffhj
obwohl bei 2 sollte: 2, sr, sd sein, als Ergebnis.

Ich melde mich noch diesbezüglich.

Ich danke euch hertzlich für die bisherige Hilfe!
 
was ist denn der Inhalt von deine "spalte1", diese ist ja jetzt ausschlaggebend für die Sortierung?
 
LauraM schrieb:
Allerdings er zeiht aus der Tabelle einmal der ersten Datensatz zu nr 1, und zu n2 z.B. zweiten und nicht demn ersten.
Nach welchem Kriterium sind die Daten denn sortiert? Ohne, dass du explizit deinem DBMS sagst, wie Datensätze sortiert sein sollen (z.b. mit einem ORDER BY) gibt es keine feste Reihenfolge von Daten von der du ausgehen kannst. Deshalb kann es auch passieren, dass sich die Reihenfolge der gefilterten Daten von den vorher ausgegebenen Daten unterscheidet.

LauraM schrieb:
Das erste Satz ist immer "gültiger", aber habe ich kein Datum, deshalb kann ich nicht definieren.
Wie genau setzt sich denn für dich die Reihenfolge der Datensätze zusammen? Was bedeutet "gültiger"? Wenn du das nicht explizit mit den in der DB gespeicherten Informationen und Spalten definieren kannst, dann muss man einfach feststellen, dass du für deinen Zweck eine ungeeignete Datenbankstruktur hast.
 
  • Gefällt mir
Reaktionen: Oelepoeto
Oelepoeto schrieb:
was ist denn der Inhalt von deine "spalte1", diese ist ja jetzt ausschlaggebend für die Sortierung?
Guten Morgen, spalte 1 ist eine Farbe: blau, rot, NULL (falls keine war), gelb etc.
Ich habe anpasst mit order by controlfield und jetzt passt!

Dankeschön!
 
Hallo,
ich habe das Problem schon mit NULL erwähnt, aber taucht .
Ich habe Tabelle, wo NULL steht. Wenn ich eine XML auf Grund von meine Tabelle baue, taucht die NULL in tags, aber es soll nicht.

Wie/ was kann ich formulieren in der Abfrage, damit NULL nicht im tags vorkommt?
 
Zuletzt bearbeitet:
Wie immer, ist das Problem ungenau beschrieben. In deinem anderen Thread gibt's endlich mal Details.
 
Zurück
Oben