Zum Inhalt wechseln


Foto

SQL Datenbank Suche

MS SQL

  • Bitte melde dich an um zu Antworten
22 Antworten in diesem Thema

#16 whoami

whoami

    Newbie

  • 11 Beiträge

 

Geschrieben 22. Oktober 2014 - 14:06

ja das geht auch aber mit T1.user aber dann kommt im Feld NULL

 

obwohl was drinne steht :(


Bearbeitet von whoami, 22. Oktober 2014 - 14:36.


#17 Cybquest

Cybquest

    Expert Member

  • 1.882 Beiträge

 

Geschrieben 22. Oktober 2014 - 15:50

fast ;-)

 

SELECT A1.ID, A1.User, T1.Abo FROM (SELECT DISTINCT T1.ID, T1.User, "RT" AS AboRT FROM T1) AS A1...

 

 

die T1-Tabelle wird, wie schon ein paar Mal erwähnt, per LEFT JOIN angebunden mit "WHERE... NULL" und dient nur der Ermittlung der fehlenden Datensätze. Da KANN nie was zurück kommen!

Die Daten, die angezeigt werden können, kommen einzig aus dem Subselect A1.


... und solltest Du noch mehr "User-Felder" drin haben, die Du hier noch nicht erwähnt hast, würde ich Dir dringend Nils' ersten Hinweis ans Herz legen: Erst mal das Datenmodell normalisieren! Haufenweise redundante Daten in einer Tabelle is nich schön...


Bearbeitet von Cybquest, 22. Oktober 2014 - 15:51.

My name is Frank, you can say you to me.

#18 whoami

whoami

    Newbie

  • 11 Beiträge

 

Geschrieben 24. Oktober 2014 - 07:56

Super, vielen dank es Funktioniert.

 

Wenn ich das ganze nun nach Datum eingrenze und das Feld dann halt hinzufüge und mit a1.Date > '01.09.2014' z.b mache, funktioniert das auch, das problem ist nur, das ich die Datenbank nicht Indexiert habe und auch nicht so einfach darf, da diese aber millionen von einträgen enthällt ( ich weis nicht schön aufgebaut ) wird das ganze aber jahre dauern.

 

gibt es da noch einen schnelleren weg das nach Datum zu sortieren?



#19 Cybquest

Cybquest

    Expert Member

  • 1.882 Beiträge

 

Geschrieben 24. Oktober 2014 - 10:52

A1.Date ist da wiederum der falsche Ansatz! Da sollte es dann T1 sein. Der Subselect mit dem "DISTINCT" leifert ja eindeutige Datensätze pro User (also für jeden User nur 1 Zeile). Wenn Du da nun das Date mit reinpackst, wird's wirr!

 

Also: Ganz am Schluss ein "Where T1.Date > ..."

 

Quatsch... iss ja LEFT JOIN...

 

Du willst nur die User, die Datensätze haben, die neuer als "DATE" sind, korrekt? Dann direkt ein WHERE in den Subselect, würde ich sagen.

Subselect wäre dann: (SELECT DISTINCT T1.ID, T1.User, "RT" AS AboRT FROM T1 WHERE T1.Date > '01.09.2014') AS A1

 

... dieses Date aber nicht versuchen mit auszugeben! Sonst klappt das mit dem DISTINCT nicht und alles wird hundsehlendlahm ;)


Bearbeitet von Cybquest, 24. Oktober 2014 - 11:01.

My name is Frank, you can say you to me.

#20 whoami

whoami

    Newbie

  • 11 Beiträge

 

Geschrieben 27. Oktober 2014 - 08:37

merci :*

 

letzte frage.

 

Wenn ich als Ausgabe nicht die ganzen ergebnisse sehen möchte sondern nur die anzahl der ergebnisse, geht das doch mit count oder? weil er mir error von wegen group by usw dann raus haut :(

 

ergebnis soll quasy nur anzeigen wieviele AG es ohne RT gibt



#21 Cybquest

Cybquest

    Expert Member

  • 1.882 Beiträge

 

Geschrieben 27. Oktober 2014 - 10:21

und wo hast Du den Count hin geschrieben? Wenn Du ausser dem Count noch weitere Felder in der Ausgabe (also am Anfang des Scriptes) drin gelassen hast, müssen die gruppiert werden (daher die Meldung).

Wenn Du wirklich nur den Count willst:

Select Count(A1.ID) FROM ... sollte Dir'n Ergebnis bringen.


My name is Frank, you can say you to me.

#22 whoami

whoami

    Newbie

  • 11 Beiträge

 

Geschrieben 27. Oktober 2014 - 10:27

Also entweder als ausgabe nur die Zeilen als ergebnis also z.b 838 ( wenn es 838 ohne RT gibt )

 

oder als ausgabe wie bisher alle ergebnisse und darunter ( neben jedem ergebnis ) oder wo auch immer dann die 838 stehen...

 

 

wenn ich nur Select Count(A1.ID) From T1........ mache, erhalte ich bei meinen versuchen entweder den group by fehler oder wenn ich es dann mit group by sortiere neben den ergebissen eine 1 weil es diese zeile in der Variante nur 1x gibt o.O

 

 

Edit:

 

vieleicht komme ich so einfacher selber ans ziel..

 

Einfache SQL Select abfrage:

 

select abc, def, ghi FROM T1.blubbla where abc=>'2014-01-20'

 

 

ergebniss bisher sind ja nur die ergebnisse

 

nun soll entweder NUR die gesamten zeilen ergebnisse ( z.b 50 Treffer ) ausgegeben werden

oder alle ergebnisse und darunter/daneben jedem ergebnis dann

....... Treffer 1

....... Treffer 2

...........................


Bearbeitet von whoami, 27. Oktober 2014 - 10:31.


#23 Cybquest

Cybquest

    Expert Member

  • 1.882 Beiträge

 

Geschrieben 27. Oktober 2014 - 10:38

Poste mal Deinen aktuellen Stand.

Bei mir kommt genau nur eine Anzahl zurück mit o.g. Count ohne Gruppierung.

 

SELECT COUNT(A1.ID) FROM (SELECT DISTINCT T1.ID, "RT" AS AboRT FROM T1) AS A1
LEFT JOIN T1 ON (A1.AboRT = T1.Abo) AND (A1.ID = T1.ID)
WHERE ((T1.Abo) Is Null)


?!?... und was hat Deine "Einfache Abfrage" mit der bisher gestellten Fragestellung zu tun?


Bearbeitet von Cybquest, 27. Oktober 2014 - 10:36.

My name is Frank, you can say you to me.



Auch mit einem oder mehreren der folgenden Tags versehen: MS SQL