Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL -> LIKE Ausdruck richtig verwenden? (https://www.delphipraxis.net/27874-sql-like-ausdruck-richtig-verwenden.html)

plautzer 16. Aug 2004 21:59


SQL -> LIKE Ausdruck richtig verwenden?
 
HI,

Ich habe im Quickreport 2 queries die jeweils einer tabelle (paradox) [Gruppe und Untergruppe] zugeordnet sind. Die habe ich auf dem Quickreprot plaziert -> mater/detail

Mein problem liegt bei der Zuordnung der UNTERGRUPPE zur Gruppe

BSP:
Gruppe (id) = 1A
Untergruppe (id) = 1A1001, 1A1002, 1A1002

1A --1A1001
--1A1002
--1A1003...


Hier mein SQL CODE

SQL-Code:
select * from untergruppe a, gruppe b
where a.untergruppe(id) like a.gruppe(id)+'%'
Das ganze funzt irgetnwie nicht, habt ihr einen rat?

THx,

PLautzer

Robert_G 16. Aug 2004 23:28

Re: SQL -> LIKE Ausdruck richtig verwenden?
 
In SQL werden Strings per "||" konkatiniert.
SQL-Code:
SELECT *
FROM  UnterGruppe a
      ,Gruppe b
WHERE a.UnterGruppe like a.Gruppe || '%'
Ich denke mal das "(id)" war eine Zusatzinfo für uns oder? :gruebel:
Im richtigen Statement dürfte es dort knallen. ;)

Hansa 16. Aug 2004 23:28

Re: SQL -> LIKE Ausdruck richtig verwenden?
 
Zitat:

Zitat von plautzer

1A --1A1001
--1A1002
--1A1003...

...
Das ganze funzt irgetnwie nicht, habt ihr einen rat?

Der wichtigste Rat ist, das DB Design dringend zu überdenken. Mit referentieller Integrität läßt sich so ein Konstrukt nicht in Einklang bringen.

Was ist, wenn sich das "1A" ändert ? Willst du dann alle Datensätze durchgehen um nachzusehen, wo du die Untergruppen 1A001, 1A002 ändern mußt ?

Wer so programmiert, der erzeugt einen Haufen an Redundanzen. Und das wiederum erzeugt Fehler und diese Frage hier. Lasse die Gruppe Gruppe sein und die Untergruppe auch. Insbesondere lasse die ID in Ruhe. :mrgreen: Das Like benutzt man zum Suchen und nicht für die ID.

Robert_G 16. Aug 2004 23:29

Re: SQL -> LIKE Ausdruck richtig verwenden?
 
Zitat:

Zitat von Hansa
Zitat:

Zitat von plautzer

1A --1A1001
--1A1002
--1A1003...

...
Das ganze funzt irgetnwie nicht, habt ihr einen rat?

Der wichtigste Rat ist, das DB Design dringend zu überdenken. Mit referentieller Integrität läßt sich so ein Konstrukt nicht in Einklang bringen.

....

:shock: Das hatte ich gar nicht gesehen.... :roll:

Hansa 16. Aug 2004 23:42

Re: SQL -> LIKE Ausdruck richtig verwenden?
 
Zitat:

Zitat von Robert_G
:shock: Das hatte ich gar nicht gesehen.... :roll:

Na siehste mal. :mrgreen: Am besten noch in die Artikel-Nr. den Lieferanten (natürlich als Nr.) mit rein packen. Und dann noch das ganze als eindeutige ID verwenden. :wall: Bei Lochkarten hat das mangels Speicherplatz noch Sinn gemacht. Damals gab es nämlich keine DB-Felder. Da mußte alles in eine Nummer rein. Aus dieser konnte man dann schließen, was es ungefähr war. Aber selbst in diesen Computer-Urzeiten hätte ein Like keinen Sinn gehabt.

plautzer 17. Aug 2004 19:34

Re: SQL -> LIKE Ausdruck richtig verwenden?
 
HI,

@Hansa:

Dein vorschlag hat mir leida nicht geholfen und ja das ID war nur ne zusatz-info :zwinker:
Trotzdem Thx!

@Robert

Die ID ist nicht veränderbar und wenn man die ID in gruppe löscht, das werden auch alle dazugehörigen IDs in Untergruppe gelöscht. Ich habe auch bis jetzt keine weiteren problem ausser mit der Query im Quickreport.

Wenn das aber wirklich unweigerlich zu Konflikten führt, dann werde ich wirklich mal über eine andere Methode nachdenken.

Plautzer

Hansa 17. Aug 2004 20:18

Re: SQL -> LIKE Ausdruck richtig verwenden?
 
Zitat:

Zitat von plautzer
@Hansa:

Dein vorschlag hat mir leida nicht geholfen und ja das ID war nur ne zusatz-info :zwinker:
...
Wenn das aber wirklich unweigerlich zu Konflikten führt, dann werde ich wirklich mal über eine andere Methode nachdenken.

Ja, es wird unweigerlich zu Konflikten führen, früher oder später. Ich würde sagen : jetzt steckst du schon richtig drin mit Fehlern. :mrgreen:

Man macht keine zwei Felder, die im Prinzip nichts miteinander zu tun haben in ein Feld !!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 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