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 2 von 2     12   
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Wie mehrfache Einträge finden?

  Alt 11. Aug 2004, 20:55
Kleiner Hinweis... MySQL kann noch keine SubQueries, soweit ich weiß.
Günter
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#12

Re: Wie mehrfache Einträge finden?

  Alt 11. Aug 2004, 21:03
Sorry, da kann ich dir auch nicht wirklich helfen.

Nur einen Tipp kann ich dir geben: Schaue dir einfach mal PostgreSQL an.
Vielleicht gefällt es dir ja. (ist eine objekt-orientierte DB)
mySQL kann einfach nix

Nachtrag:
Zitat von GuenterS:
Kleiner Hinweis... MySQL kann noch keine SubQueries, soweit ich weiß.
Da haben wir es ja.

Wie willst du irgendwas in deiner DB ohne SubQueries machen, das über SELECT A FROM B hinausgeht?
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#13

Re: Wie mehrfache Einträge finden?

  Alt 11. Aug 2004, 21:08
Zitat von Robert_G:
mySQL kann einfach nix
Ist aber schneller als PostgreSQL
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Wie mehrfache Einträge finden?

  Alt 11. Aug 2004, 21:08
Zitat von Robert_G:
Wie willst du irgendwas in deiner DB ohne SubQueries machen, das über SELECT A FROM B hinausgeht?
Man muss es selbst programmiertechnisch mit eventuell mehreren SQL statements lösen.

Beispielsweise alle Records in eine Liste und dort die doppelten finden, oder über eine doppelte Schleife, wo man dann jeweils über
select count(*) form meinetabelle where (feld1 = wert1) and ( ... ) ...

die anzahl auslesen und damit auf doppelte schließen kann.


Ich muss mich selbst korrigieren MYSQL 4.1 kann Subselects ...

Einen direkten Vergleich zwischen MySQL, Postgres und MAXDB findest Du hier: Vergleich DBs
Günter
  Mit Zitat antworten Zitat
Benutzerbild von lume96
lume96

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

Re: Wie mehrfache Einträge finden?

  Alt 12. Aug 2004, 08:31
Hi,

vielleicht kann MySQL ja das :
SQL-Code:
/* Sql query */
select t.* from test t, test u
where t.nachname = u.nachname
and t.vorname = u.vorname
and t.id <> u.id
Sonst wüsste ich auch nicht weiter.

Selbst wenn da klappt, wüsste ich nicht, wie man das entsprechende Update ohne subquery machen könnte. Wenn Du allerdings, wie oben geschrieben, manuell updaten willst, sollte Dir oben genanntes sql statement weiter helfen (falls es denn funktioniert).

Lutz
Lutz Meyer
  Mit Zitat antworten Zitat
Chewie

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

Re: Wie mehrfache Einträge finden?

  Alt 12. Aug 2004, 12:08
Die MySQL-Version, die ich hab (4.1) kann Subquerys. Die hab ich auch schonmal hingekriegt, aber ich weiß nicht mehr wie
Aber vielleicht find ich ja anhand der Doku raus, wie die genau aussehen müssen. Danke an alle an dieser Stelle.

Und auch nochmal danke an lume96 für das letzte Statement. Ich werds gelich mal probieren.

Edit: lume96, du bist mein Held! Es klappt!
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
 
#17

Re: Wie mehrfache Einträge finden?

  Alt 12. Aug 2004, 14:22
Hi,

Freut mich, dass es so läuft.

Noch 'nen kleiner Hinweis : Wenn Du Vor- und Nachnamen vergleichenen willst, und falls die Daten von verschieden Usern eingegeben werden, würde ich unbegingt noch 'n trim() und 'n upper() um jedes 'Field' bauen, z.B.:

SQL-Code:
/**/
where trim(upper(t.nachname))= trim(upper(u.nachname))
Da der Vergleich field1=field2 case-sensitive ist, könnten Dir 'Leertaste' und unterschiedliche Gross- und Kleinschreibung einen Strich durch die Rechnung machen (z.B. 'MEYER' <> 'Meyer ').


MfG
Lutz
Lutz Meyer
  Mit Zitat antworten Zitat
Chewie

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

Re: Wie mehrfache Einträge finden?

  Alt 12. Aug 2004, 14:26
Nicht ganz
Bei MySQL wird auch beim Vergleichsoperator = nur zwischen Groß- und Kleinschreibung unterschieden, wenn ein (VAR)CHAR-Feld das Attribut "Binary" hat (bzw. ein BLOB-Feld anstelle eines TEXT-feldes benutzt wird).
Das mit dem Trim ist aber eine gute Idee.
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
 
#19

Re: Wie mehrfache Einträge finden?

  Alt 12. Aug 2004, 14:34
Ok, sorry (wie gesagt, ich benutze, beruflich bedingt, eher Interbase/Firebird).

Dabei hatte ich extra kurz in der MySQL Dok nachgeschaut, ob es dort upper()/ucase() und trim() gibt, bevor ich es hier vorschlage.

Lutz
Lutz Meyer
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:22 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