tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
457
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Halpha Halpha ist offline Mitglied Gold
    Registriert seit
    Nov 2009
    Ort
    Mauth
    Beiträge
    141
    Hallo, ich habe eine Tabelle und möchte diese auf eine ander umschreiben.
    Aufbau im groben:
    Tabelle 1:
    id, name, category

    Tabelle 2:
    id, name, category

    Das Problem ansich ist schonmal in der Tabelle 2 sind die "name" mehrmals vorhanden und ich bräuchte nur immer einen.

    Beispiel:
    Tabelle 2 Eintrag:
    Code :
    1
    2
    3
    
    1, test, 5
    2, test, 5
    3, test, 5

    Dieser soll in Tabelle 1 dann wie folgt stehen:
    Code :
    1
    
    1, test, 5

    Ist so ein Query überhaupt möglich oder muss ich das mit PHP lösen? Wäre natürlich mit PHP einfach aber ich würde gern mein sql bissl verbessern.

    Mein erster Ansatz war einmal(funktioniert natürlich nicht):
    Code :
    1
    2
    3
    4
    
    INSERT INTO 
        tabelle1 (name, category)
    VALUES (
        (SELECT  name FROM tabelle2), (SELECT category FROM tabelle2))

    Hier gibt es 2 Probleme, 1. die 2 SELECT abfragen werfen ja gleich immer alle Elemente aus und deshalb kann er sie ja nicht in einen Datensatz schreiben. 2. Problem ist dass er ja alle kopieren würde und nicht nur einen mit dem gleichen namen.

    Würde mich über eine Antwort freuen
     
    Mit freundlichen Grüßen

    Michael Hagl Webentwicklung

    Ich würde mich über eine Bewertung meiner Beiträge freuen!

  2. #2
    Avatar von vandamp
    vandamp vandamp ist offline Mitglied Gold
    Registriert seit
    Nov 2003
    Ort
    Wien
    Beiträge
    155
    Hallo,

    was du suchst ist distinct - damit bekommst du jeden Eintrag, der mehrfach vorhanden ist nur einmal

    Denke das Feld id ist ein Auto-increment Feld also sollte es so klappen.

    Code sql:
    1
    2
    3
    
    INSERT INTO Tabelle2 (iname, category)
    SELECT DISTINCT  name, category,
    FROM Tabelle1
     
    m.f.g
    b. zimmel

  3. #3
    Halpha Halpha ist offline Mitglied Gold
    Registriert seit
    Nov 2009
    Ort
    Mauth
    Beiträge
    141
    Zitat Zitat von vandamp Beitrag anzeigen
    Hallo,

    was du suchst ist distinct - damit bekommst du jeden Eintrag, der mehrfach vorhanden ist nur einmal

    Code sql:
    1
    2
    3
    
    INSERT INTO Tabelle2 (id, name, category)
    SELECT DISTINCT  id, name, category
    FROM Tabelle1
    wär die SELECT dann der VALUES? Müsste dann so heissen oder?:

    Code sql:
    1
    2
    3
    
    INSERT INTO Tabelle1 (id, name, category)
    VALUES (SELECT DISTINCT  id, name, category
    FROM Tabelle1)

    die Frage ist dann auch ob er das ganze alles einfügen würde, weil es ja wieder mehr als ein Datensatz ist.
     
    Mit freundlichen Grüßen

    Michael Hagl Webentwicklung

    Ich würde mich über eine Bewertung meiner Beiträge freuen!

  4. #4
    Avatar von vandamp
    vandamp vandamp ist offline Mitglied Gold
    Registriert seit
    Nov 2003
    Ort
    Wien
    Beiträge
    155
    denke geht auch ohne values, das checkt sql schon, aber du musst die id weglassen, da solltest du in der neuen Tabelle das Feld id auf automatisch um eins weiter zählen einstellen - dann musst du die id nicht angeben.
    Am besten du probierst es einmal aus

    Code sql:
    1
    2
    
    SELECT DISTINCT  name, category
    FROM Tabelle1

    wirst sehen, jeder Datensatz kommt nur einmal vor.
    Zur einfachen Kontrolle kannst du auch noch zum Testen. - hier siehst du dann wie viele Datensätze es mit gleichem Namen und Kategorie es geben würde.

    Code sql:
    1
    2
    3
    4
    
    SELECT DISTINCT name, category, COUNT(1) AS ANZ
    FROM Tabelle1
    GROUP BY
    name, category
     
    m.f.g
    b. zimmel

  5. #5
    Halpha Halpha ist offline Mitglied Gold
    Registriert seit
    Nov 2009
    Ort
    Mauth
    Beiträge
    141
    Die Anordnung bei meinen Tabellen ist so und so ein bisschen anders. Vor allem umfangreicher. Hab das nur alles sehr vereinfacht dargestellt.

    Danke auf jeden Fall. Ich werde das mal alles bissl testen, auch wenn ich es mittlerweile mit php gelöst habe
     
    Mit freundlichen Grüßen

    Michael Hagl Webentwicklung

    Ich würde mich über eine Bewertung meiner Beiträge freuen!

  6. #6
    luigied luigied ist offline Mitglied Silber
    Registriert seit
    Mar 2007
    Beiträge
    77
    Hi,

    ich würde hier mit einem Select into arbeiten.
    http://dev.mysql.com/doc/refman/5.1/...statement.html

    Das GAnze könnte dann so aussehen:
    Code :
    1
    
    SELECT id, DISTINCT name, category INTO tabelle2 FROM tabelle1;

    Bin mir hier gerade nicht sicher, ob das Distinct genau dort stehen muss (), aber prinzipiell sollte es so funktionieren.

    mfg LuigiEd
     

  7. #7
    raiguen raiguen ist offline Mitglied Silber
    Registriert seit
    Feb 2008
    Ort
    Salzhemmendorf(Nds)
    Beiträge
    51
    Zitat Zitat von luigied
    Hi,

    ich würde hier mit einem Select into arbeiten.
    http://dev.mysql.com/doc/refman/5.1/...statement.html

    Das GAnze könnte dann so aussehen:
    Code :
    1
    
    SELECT id, DISTINCT name, category INTO tabelle2 FROM tabelle1;

    Bin mir hier gerade nicht sicher, ob das Distinct genau dort stehen muss (), aber prinzipiell sollte es so funktionieren. .
    Ähm...*räusper* Wenn du schon auf das RTFM verweist, dann dürfte es dir aufgefallen sein, dass ein SELECT INTO NUR in lokale Variablen funktioniert und NICHT in Tabellen; weiterst darf das Abfrageergebnis auch nur eine Zeile zurückgeben!
    Lies selbst:
    Zitat Zitat von MySql-Referenz
    Diese SELECT-Syntax speichert die ausgewählten Spalten direkt in Variablen. Daher kann nur eine einzige Zeile abgerufen werden.
    Wenn du dir nicht ganz sicher bist, ob es funktioniert (sofern man es nicht selbst getestet hat), dann wäre keine Antwort/Posting besser als ein falsches/irreführendes.
     
    Es ist erstaunlich, was man alles findet, wenn man etwas sucht...

Ähnliche Themen

  1. daten aus einer tabelle in die andere kopieren bzw. übernehmen
    Von Xching im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 30.11.10, 16:30
  2. Bestimmte Einträge aus einer Tabelle in eine andere Tabelle kopieren
    Von medico im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 29.03.06, 18:42
  3. Antworten: 1
    Letzter Beitrag: 29.03.06, 17:48
  4. Slices in andere Datei übernehmen
    Von 3ounder im Forum Photoshop
    Antworten: 2
    Letzter Beitrag: 30.12.05, 23:44
  5. Variablen von ein Script ins andere übernehmen
    Von matze1340 im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 22.08.05, 18:06

Stichworte