Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Hilfe bei einer abfrage

Dieses Thema im Forum "Oracle" wurde erstellt von toady, 6 Mai 2013.

  1. toady

    toady Benutzer

    Hey ich hoffe mir kann hier jemand helfen.

    ich habe eine Tabelle mit :

    Vorname | Nachname | Strasse | PLZ | Email

    jetz will ich aber dass
    er mir bei doppelten namen adresse strasse plz nur ausgibt wenn die email anders ist.


    Also: - Vergleichen von 2 Datensätzen - Vorname, Nachname, PLZ und Strasse muss gleich sein
    - Email muss verschieden sein

    bräuchte mal ne idee wie ich das herraus finden kann und ne mysql syntax wäre cool



    Gruß ToDi
     
  2. Tommi

    Tommi Datenbank-Guru

    Hallo toady,

    habe ich das richtig verstanden, dass du eine Art Duplikats-Check machen möchtest?
    Sollen denn alle Namen und Adressen nochmals ausgegeben werden oder möchtest du dann nur die Duplikate angezeigt bekommen?

    Übrigens: MySQL-Syntax? Du hast aber gemerkt, dass du diese Frage im Bereich "Oracle" eingetütet hast? - Egal - meine Syntax ist dafür MS-SQL (damit wir dann auch fast alles durchhaben -vlt. kann akretschmer ja auch noch die Sytax für PostgreSQL beisteuern :D)

    Ausgabe von doppelten Namen und Adressen mit gleicher Mailadresse:

    Code:
    SELECT *
    FROM tabelle T1
    INNER JOIN (
    SELECT Vorname, Nachname, Strasse, PLZ, Count(*) as Anzahl
    FROM tabelle
    GROUP BY Vorname, Nachname, Strasse, PLZ
    HAVING Count(*)>1) T2
    ON T1.Vorname=T2,Vorname
    AND T1.Nachname=T2.Nachname
    AND T1.Strasse=T2.Strasse
    AND T1.PLZ=T2.PLZ
    ORDER BY Vorname, Nachname, Strasse, PLZ
    
    Viele Grüße,
    Tommi
     
  3. toady

    toady Benutzer

    Ja habe ich leider zuspät gemerkt dass, ich im falschen Bereich bin aber trozdem danke für die schnelle Hilfe.
     
  4. toady

    toady Benutzer

    Ich Stolpere grade über "HAVING" kann du mir vlt genau erklären was das macht ich vermute es ist eine Bedingung aber wiegesagt ich vermute nur :D



    und ich will das er mir nur die namen asugibt wenn dei em-mail verschieden ist.
     
  5. Tommi

    Tommi Datenbank-Guru

    Hi toady,

    der Ausdruck HAVING wird im SQL-Server nur im Zusammenhang mit einem GROUP BY genutzt und hat die gleiche Funktion wie die WHERE-Klausel,
    nur dass dder Ausdruck sich auf eine Aggregatfunktion und nicht auf einen Vergleich der einzelnen Datensätze bezieht.

    Viele Grüße,
    Tommi
     
  6. ukulele

    ukulele Datenbank-Guru

    Theoretisch sollte das auch mit DISTINCT gehen, solange du keine weiteren komplexere Bedingungen hast (z.B. einen count() verwenden möchtest). Du solltest dann aber nicht mit * sondern mit Spaltennamen arbeiten.
    Code:
    SELECT DISTINCT
    Vorname,
    Nachname,
    Strasse,
    PLZ,
    Email
    FROM tabelle
     
  7. toady

    toady Benutzer

    Am besten ist schildere mal mein vorhaben.

    Angenommen:Ich habe eine Tabelle mit 1 Mio Kunden.


    3 Kunden davon Heissen Max Mustermann 1 wohnt in Norwegen und 2 wohnen in Deutschland jetz will ich das er mir das auflistet das es ihn 2 mal in Deutschland gibt.

    Das Problem an der sache ist ich kenne den namen aber Vorher nicht von den leuten ich will das er mir die Automatisch rausfiltert.


    Ich hoffe ich konnte mein Problem jetz etwas besser Schildern Die antworten vorher waren auch top um das mit der Email adresse zu lösen.


    @Ukulele mit DISTINCT komme ich da leider nicht weit :(


    Bitte nochmal um schnelle Hilfe
     
  8. ukulele

    ukulele Datenbank-Guru

    Das stimmt, DISTINCT geht nur um keine Daten doppelt auszugeben. Zum zählen musst du, wie durch Tommi beschrieben, mit GROUP BY arbeiten. Das sieht aber eigentlich gut aus...
     
  9. toady

    toady Benutzer

    Code:
    SELECT p1.Vorname, p1.Nachname
    FROM Tabelle1 p1
    INNER JOIN (
        SELECT Vorname, Count(*) as Anzahl FROM Tabelle1 p2 GROUP BY
    Vorname HAVING Count(*)>1
    )
    p2 ON p1.Vorname=p2.Vorname ORDER BY p1.Vorname
    
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden