Doppelte Werte nicht anzeigen : Distinct

LauraM

Ensign
Registriert
Nov. 2019
Beiträge
133
Hallo, ich versuche mit ditict nur erste Werte anzeigen, aber es geht nicht:
Tabelle:
nrfarbe
11ax
11bc
12gf

Mit meine Abfrage möchte ich nur das einzelne, als Ergebnis sehen:
nrfarbe
11ax
12gf

Und mache ich so:
Code:
select distinct nr, farbe from tab1

Als Ergebnis bekomme ich trotzdem dopplete nr, also Tabelle 1.

Wie kann ich das richtig zu meinem Problem formulieren?
 
Distinct funktioniert nicht, da es ja verschiedene Einträge sind. Wenn die zweite Zeile auch 11 ax wäre, klappt es mit Distinct

SELECT nr, MIN(farbe)
FROM tab1
GROUP BY NR
 
DISTINCT funktioniert schlicht nicht, du hättest hinterher einen undefinierten Zustand für die Spalte farbe.

Wie @Alkor35 richtig sagt musst du hier mit GROUP BY arbeiten.
 
Zuletzt bearbeitet:
Ja, aber ich musste die (Min) funktion auch dazu machen, wenn ich nur so machen würde;
SELECT nr, farbe
FROM tab1
GROUP BY NR

Ich habe dann die Meldung bekommen:
Die issn.issn-Spalte ist in der Auswahlliste ungültig, da sie nicht in einer Aggregatfunktion und nicht in der GROUP BY-Klausel enthalten ist.

Nun habe ich die MIN Fkt abgeschreiben, aber ich habe nicht gefunden, warum es mit Min funktioniert :-(
 
issn.issn?

Welches Datenbanksystem verwendest Du denn? In SQLite funktioniert beispielsweise beides:

SQL:
SELECT nr, farbe FROM test GROUP BY nr

und

SQL:
SELECT MIN(nr), farbe FROM test GROUP BY nr
 
Die SQL Anweisung braucht einen Eintrag, was angezeigt werden soll, bei Spalten die nicht Gruppiert werden.
Daher muss immer eine Anweisungen verwendet werden.
z.B. SUM für die Summe der Werte die Gruppiert werden
MIN für den kleinsten Wert
MAX für den größten Wert
COUNT für die Anzahl der Werte
usw.
usw.
 
preadfish schrieb:
issn.issn?

Das war richtige Bezcihnung, hier schreibe ich andere Namen :-)

Welches Datenbanksystem verwendest Du denn? In SQLite funktioniert beispielsweise beides:

SQL:
SELECT nr, farbe FROM test GROUP BY nr

und

SQL:
SELECT MIN(nr), farbe FROM test GROUP BY nr


Ich benutze MSSQL und hier funktioniert nicht alles so wie bei My SQL
 
LauraM schrieb:
Ja, aber ich musste die (Min) funktion auch dazu machen, wenn ich nur so machen würde;
SELECT nr, farbe
FROM tab1
GROUP BY NR
Verstehst du eigentlich auch mal warum das so ist? Du kopierst hier immer nur den Code dann, aber ich sehe nicht so richtig ob du auch versuchst das eigentliche Problem zu verstehen. Warum ging wohl DISTINCT nicht? Sind die ganzen Zeilen doppelt gewesen? Was mahct den GROUP BY? Warum brauchst du eine Aggregatfunktion? Wenn du das nicht verstehst, dann wirst du immer wieder Probleme bekommen (und hier fragen ...)
 
DISTINCT hat nicht funktioniert, da ich mehr Werte ausgeben wollte. Das Funktion mit Min von Alkor35 hat funktioniert, das habe ich oben auch geschrieben!

Ich habe mich auch bedankt!
Manchmal denkt man laut und wenn man alleine arbeitet, möchte man schnell fragen. Dafür bin ich dankbar für eure Antworte!
 
@LauraM, du verarbeitest deine Daten auf diese Art ohne zu wissen, was genau passiert. Wie @bronks schon sagt, so gibts du den kleinsten Wert aus und nicht den ersten, aber scheinbar bist du schon zufrieden sobald du keine Fehlermeldung o.Ä. bekommst.
Deine Kunden bzw. Auftraggeber werden so keine Freude haben..
 
Danke, ich melde mich im Forum ab und gehe ich erstmal lernen.
Manchmal braucht einfach schnell Hilfe, desghalb frage ich einfach hier.

Viele Grüße
 
Hallo,ich muss wieder fragen, bzw. möchte sehr gerne, damit mir jemand hilft.
In meiner Tabelle sind 6 Spalten. Die erste Spalte ist ein nr. Manchmal passiert, dass zu diesem nr 3, 4 Datensätze stehen, da unterschiedliche Inhalt in anderen Spalten ist.

Nun möchte ich , dass nur der erste nr , wenn ich Abfrage stelle, als Ergebnis kommt.
Mit group by funktioniert nicht, mit FirstValue auch nicht.
Wie /wo kann ich definieren, dass bei der Abfrage nur 1 Datensatz geliefert wird?

Meine Abfrage soll nur jeweils ersten Datensatz liefern.
 
Zuletzt bearbeitet:
Ich habe eine Tabelle1, wo die Nummer von der Tabelle2 (hier sind die Doppelsätze) gleich sind.
Ich bin wahrscheinlich blöd, aber wollte ich einfach über left join tab1 machen, trotzdem, als Ergebnis bekomme ich die Doppelsätze von tab2.:grr: ich bin total verzweifelt.
 
ich gebe dir jetzt zum letzten mal den Tip, zeig bitte eine Bsp Tabelle + das gewünschte Ergebnis!
Was soll der Quatsch mit diesen kryptischen Textaufgaben immer. Wozu gibt es formale Syntax, formale Sprachen etc. eigentlich? Eine Tabelle zeigen ist doch so einfach, oder nicht?

Also:
1. ich habe folgende Tabelle ...
2. ich möchte folgendes Resultat ...
3. ich hab schon folgende Query versucht ...
 

Hallo, danke:)
Ich habe Tabelle:


1at
1ag
2dg
3rz
3st
Ich möchte nur ein Datensatz, nur das erste, von jede Nummer:
1at
2dg
3rz
Ich habe mit Distinct, group by ausprobiert.
Da ich grade nicht am Rechner bin, kann ich keine Scripte von mir schicken, morgen könnte ich um 7 uhr. immer was ich gemacht habe, sind immer doppelt oder dreifach oder so viele, wieviel Datenätze zu jeweilige Nr sind, ausgegeben worden.
Da ich eine saubere Tabelle mit nr habe, wollte ich left join machen, beide Tabellen Verknüpfen, trotzdem sind immer so viele als Ergebnis gezeigt worden,wieviel Datensätze.
Wäre jetzt möglich, dass du mir hilfst?

schönen Abend
 
Also wenn du nicht Mal die grundsätzliche Funktionsweise von Joins im SQL verstehst und warum du 'trotzdem' Doppeleinträge bekommst würde ich dir raten, dein 'Privatprojekt' (was dir keiner abnimmt) einfach zu vergessen. Das wird nichts.
 
Guten Morgen, schade, dass du mir nicht helfen kannst. Es gibt hier in Forum Fragen und sofort Antworte. Ich habe eine Frage und bitte ich um eine Antwort und kriege ich schimpfe, weil ich was nicht weiss.:confused_alt:
Ergänzung ()

Oelepoeto schrieb:
Also wenn du nicht Mal die grundsätzliche Funktionsweise von Joins im SQL verstehst und warum du 'trotzdem' Doppeleinträge bekommst würde ich dir raten, dein 'Privatprojekt' (was dir keiner abnimmt) einfach zu vergessen. Das wird nichts.
Kannst mir nur Tip geben, wie ich das mit join verknüpfen soll, um Doppelsätze zu vermeiden?
Es wäre sehr nett.
 
Zuletzt bearbeitet:
Zurück
Oben