AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Wie mehrfache Einträge finden?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie mehrfache Einträge finden?

Ein Thema von Chewie · begonnen am 11. Aug 2004 · letzter Beitrag vom 12. Aug 2004
Antwort Antwort
Seite 1 von 2  1 2      
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#1

Wie mehrfache Einträge finden?

  Alt 11. Aug 2004, 16:56
Ich hab eine MySQL-Tabelle, in der sich Reihen befinden, die in zwei Feldern mit andern Reihen identisch sind. Diese möchte ich finden (nicht um sie zu löschen, sondern um dort einen Verweis auf die nächste Zeile zu setzen).
Geht das mit (My)SQL-Bordmitteln oder benötige ich da externe Programmlogik?
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von lume96
lume96

Registriert seit: 14. Sep 2003
Ort: Rognac/Marseille - Frankreich
128 Beiträge
 
Delphi 7 Professional
 
#2

Re: Wie mehrfache Einträge finden?

  Alt 11. Aug 2004, 18:19
Hi,

Reihen soll Record heissen ???

z.B. folgende Tabelle ???

TABLE1

FIELD1 FIELD2 FIELD2
a 1 e
b 2 e
c 3 f
d 2 e
e 3 f
f 4 g

Wenn Dich jetzt die Field2 - Field3-kombination interessiert, würde ich das wie folgt machen :



select t1.field1 from table1 t1
where t1.field2 || t1.field3 in (
select t2.field2 || t2.field3 from table1 t2
group by t2.field2, t2.field3
having count(t2.field2 || t2.field3) > 1)

Dieses sql statement sollte Dir b,c,d,e zurückgeben, allerdings nicht a,f weil bei a und f die
field2-field3-kombination nur einmal vorkommt (also count = 1)

Hoffe, ich hab die Frage richtig verstanden und es hilft weiter.

Lutz
Lutz Meyer
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Wie mehrfache Einträge finden?

  Alt 11. Aug 2004, 19:28
Die Frage hast du richtig verstanden
Leider funktioniert der Query nicht: Es wird ein Fehler gemeldet beim inneren Select.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Wie mehrfache Einträge finden?

  Alt 11. Aug 2004, 19:35
Das Problem mit mySQL ist schlicht, dass es einfach nix kann (no Offense )
Vielleicht kann es das:
SQL-Code:
UPDATE DeineTabelle u
SET u.LinkedPK = (SELECT Min(t.PK)
                     FROM DeineTabelle t
                     WHERE t.Feld1 = u.Feld1 and
                            t.Feld2 = u.Feld2 and ...
                     GROUP BY t.Feld1, t.Feld2, ...)
WHERE u.PK != (SELECT Min(t.PK)
                FROM DeineTabelle t
                WHERE t.Feld1 = u.Feld1 and
                       t.Feld2 = u.Feld2 and ...
                GROUP BY t.Feld1, t.Feld2, ...
                HAVING Count(t.PK) > 1)
Der Code mag zwar eklig aussehen, aber ich bin in solchen Dingen nicht so sehr erfahren (wenn man sich auf _reines_ SQL beschränken muss).

btw: Es gibt auch kostenlose DBs, die was drauf haben zum Bleistift PostgreSQL
  Mit Zitat antworten Zitat
Benutzerbild von lume96
lume96

Registriert seit: 14. Sep 2003
Ort: Rognac/Marseille - Frankreich
128 Beiträge
 
Delphi 7 Professional
 
#5

Re: Wie mehrfache Einträge finden?

  Alt 11. Aug 2004, 19:59
Sorry,
kenne mich mit MySQL nicht besonders gut aus.

Is 'ne "Quick and Dirty"-Lösung die ich ab und zu mal verwende, allerdings zugegebenerweise nur bei Interbase/Firebird.

Ausserdem ist mir auf der Heimfahrt noch eingefallen, dass meine Lösung einen Bug hat .

ab || cd = abcd
abc || d = abcd


Also besser die Variante von Robert.

Lutz
Lutz Meyer
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Wie mehrfache Einträge finden?

  Alt 11. Aug 2004, 20:04
@RobertG: Abgesehen davon, dass ich bisher noch keine Ahnung hab, was dein Query macht, krieg ich ne Fehlermeldung:
Zitat:
Unknown system variable 'u'
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: Wie mehrfache Einträge finden?

  Alt 11. Aug 2004, 20:09
Zitat von Chewie:
Ich hab eine MySQL-Tabelle, in der sich Reihen befinden, die in zwei Feldern mit andern Reihen identisch sind. Diese möchte ich finden (nicht um sie zu löschen, sondern um dort einen Verweis auf die nächste Zeile zu setzen).
Genau das.
  • DeineTabelle -> rate mal
  • LinkedPK -> Die Spalte in der du den Verweis ablegen willst
  • PK -> dein PK
  • t.Feld1, t.Feld2, ... -> die Felder an denen du die doppelten Felder erkennst
  • "u" ist der Tabellen alias für das UPDATE.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Wie mehrfache Einträge finden?

  Alt 11. Aug 2004, 20:14
Tut mir leid wegen der dummen Fragen, aber: Was ist "mein PK"?

Und zunächst würde es mir reichen, einfach alle doppelten aufgelistet zu sehen. Das Updaten der einen Spalte kann ich auch manuell erledigen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: Wie mehrfache Einträge finden?

  Alt 11. Aug 2004, 20:19
Zitat von Chewie:
Tut mir leid wegen der dummen Fragen, aber: Was ist "mein PK"?
PK = Primary Key = meist numerische Spalte, die einen Datensatz eindeutig identifieren kann

Zitat von chewie:
Und zunächst würde es mir reichen, einfach alle doppelten aufgelistet zu sehen. Das Updaten der einen Spalte kann ich auch manuell erledigen.
Da wird sich nicht viel ändern...
SQL-Code:
SELECT SomeColumns
FROM DeineTabelle u
WHERE u.PK != (SELECT Min(t.PK)
                FROM DeineTabelle t
                WHERE t.Feld1 = u.Feld1 and
                       t.Feld2 = u.Feld2 and ...
                GROUP BY t.Feld1, t.Feld2, ...
                HAVING Count(t.PK) > 1)
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Wie mehrfache Einträge finden?

  Alt 11. Aug 2004, 20:34
Verdammt... wegen dem SQl-Bug hab ich oben das UPDATE übersehen. Hat mich schon verwundert

Leider tuts immer noch nicht. So sieht meine Tabelle table1 aus:
Code:
id vorname  nachname
id hat den Primary Key. Folgendes Statement:
SQL-Code:
SELECT *
FROM table1 u
WHERE u.id != (SELECT Min(t.id)
                FROM table1 t
                WHERE t.vorname = u.vorname and
                       t.nachname = u.nachname
                GROUP BY (t.vorname, t.nachname)
                HAVING Count(t.id) > 1)
verursacht folgenden Fehler:
Zitat:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT Min(t.id) FROM table1 t WHERE t.vorname = u.vorname and
Benutzt wird Version 4.0.1.6
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz