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

Einfache Abfrage

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Gert_Sky, 19 September 2018.

  1. Gert_Sky

    Gert_Sky Neuer Benutzer

    Hallo zusammen,


    bin ganz neu hier und muss jetzt doch mal Anfangen mich tiefer mit SQL zu befassen :) Ich hoffe ich kann hier auch Anfänger Fragen stellen so wie diese :)

    Ich müsste eine Abfrage machen in der ich Rausfinde welche Kunden die gleich ID haben.

    Also ein Kunde hat eine ID z.b Hans Müller hat 1234 jetzt ist es duch einen Import aber dazu gekommen das auch Michael Schmitz die 1234 haben könnte. Wie kann ich das Abfragen? Ihr seht ich bin Anfänger :)

    Ich habe eine MariaDB mit dem Tool HeidiSQL


    Danke und Viele Grüße

    Gert
     
  2. akretschmer

    akretschmer Datenbank-Guru

    angenommen, du hast:

    Code:
    test=# create table gert_sky(id int, name text);
    CREATE TABLE
    test=*# insert into gert_sky select s, 'Name ' || s::text from generate_series(1,10) s;
    INSERT 0 10
    test=*# select * from gert_sky ;
     id |  name   
    ----+---------
      1 | Name 1
      2 | Name 2
      3 | Name 3
      4 | Name 4
      5 | Name 5
      6 | Name 6
      7 | Name 7
      8 | Name 8
      9 | Name 9
     10 | Name 10
    (10 rows)
    
    test=*# insert into gert_sky values (7, 'der ist doppelt');
    INSERT 0 1
    test=*# select * from gert_sky ;
     id |      name       
    ----+-----------------
      1 | Name 1
      2 | Name 2
      3 | Name 3
      4 | Name 4
      5 | Name 5
      6 | Name 6
      7 | Name 7
      8 | Name 8
      9 | Name 9
     10 | Name 10
      7 | der ist doppelt
    (11 rows)
    
    id = 7 ist nun doppelt. Du willst die ID wissen, die doppelt sind:

    Code:
    test=*# select id, count(*) from gert_sky group by id having count(*) > 1;
     id | count
    ----+-------
      7 |     2
    (1 row)
    
    test=*#
    
    Dein grundlegender Fehler ist, daß Die ID Deiner Kundentabelle kein PRIMARY KEY ist, Das wird Dir noch öfter schmerzhaft auf die Füße fallen.
     
  3. Gert_Sky

    Gert_Sky Neuer Benutzer

    Hallo,

    danke, das Prblem dabei ist ich habe in der Spalte ID ganze viele gleiche zu einem Namen der Name kommt ja öfters vor und somit auch die ID. Ich bräuchte was, was mir anzeigt, wenn zwei Namen die gleich ID habe. Wenn jetzt Michael Müller und Franz Schmitz die gleich ID haben. Nicht wenn der gleich Name die gleiche ID hat :)

    Danke und LG
    Gert
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Genau das ist Dein Grundfehler. Du benötigst eine eindeutige Kennzeichnung, dazu dient üblicherweise die ID.
     
  5. ukulele

    ukulele Datenbank-Guru

    akretschmer hat da schon Recht, es gibt eine Tabelle Kunden in der es zu jedem Kunden genau einen Eintrag gibt, vielleicht liegt dort schon dein Fehler. Alle anderen Informationen / Bewegungsdaten können zwar einem Kunden zugeorndet werden (über die ID) und dort kann dann die selbe ID auch mehrfach vorkommen aber dort stehen eben keine Daten wie Kundenname, die kommen nur in die Kundentabelle.

    In der Kundentabelle ist eine ID immer eindeutig.
    Code:
    SELECT * FROM tabelle WHERE id IN ( SELECT ID FROM tabelle GROUP BY ID HAVING count(DISTINCT kundenname) > 1 ) ORDER BY ID,kundenname
    Das sollte recht schnell eine Liste betroffener Kunden liefern. Ich weiß aber nicht ob MySQL count(DISTINCT spalte) kann.
     
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