AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

sql

Ein Thema von Klaus D. · begonnen am 29. Nov 2003 · letzter Beitrag vom 7. Dez 2003
Antwort Antwort
Seite 1 von 3  1 23      
Klaus D.

Registriert seit: 27. Okt 2003
Ort: 03238 Finsterwalde
124 Beiträge
 
Delphi 6 Professional
 
#1

sql

  Alt 29. Nov 2003, 18:33
Morgen
ich mal wieder...was ist falsch?

SQL-Code:
SELECT id_Typenschild, sid_Fabrikat, Typ, Drehzahl, id_Fabrikat,
Fabrikat FROM tbl_Typenschild t1, tbl_Fabrikat t2
WHERE t1.sid_Fabrikat=t2.id_Fabrikat AND
(Typ like :p1 ) OR //gehört zur Tabelle t1
(Fabrikat like :p1) //gehört zur Tabelle t2
Danke Klaus

[edit=r_kerber]SQL-Tags eingefügt. Mfg, r_kerber[/edit]
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#2

Re: sql

  Alt 29. Nov 2003, 18:43
Tach

Setz mal t1.sid_Fabrikat=t2.id_Fabrikat in Klammern
(t1.sid_Fabrikat=t2.id_Fabrikat) Falls das erste in jedem Fall zutreffen soll und dann zwischen dem 2. und 3. gewählt werden soll, dann muss das 2. und 3. ebenfalls in ner Klammer stehen
((Typ like :p1 ) OR (Fabrikat like :p1))
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#3

Re: sql

  Alt 29. Nov 2003, 18:55
Hallo Klaus,

schreibe doch mal, was für eine Meldung kommt. Außerdem wäre es hilfreich zu wissen, welche DB Du hier verwendest.
Ich bin mir nicht ganz sicher, ob es erlaubt ist, zweimal denselben Parameternamen zu verwenden.
  Mit Zitat antworten Zitat
Klaus D.

Registriert seit: 27. Okt 2003
Ort: 03238 Finsterwalde
124 Beiträge
 
Delphi 6 Professional
 
#4

Re: sql

  Alt 30. Nov 2003, 22:09
Ich arbeite mit 'ADS'.
das oben genannte Problem ist gelöst, habe aber leider wieder ein neues.
ich habe 2.Query's.
Query1.sql:
SQL-Code:
SELECT id_Motorart, Motorart, id_Typenschild, sid_Motorart, sid_Fabrikat,
Typ, Drehzahl, Motornummer, Leistung_KW, id_Fabrikat, Fabrikat
FROM tbl_Motorart t1, tbl_Typenschild t2, tbl_Fabrikat t3
WHERE (t1.id_Motorart=t2.sid_Motorart) AND(t2.sid_Fabrikat=t3.id_Fabrikat)
Query2.sql:
SQL-Code:
SELECT id_Typenschild, id_Wickeldaten, sid_Typenschild, sid_Wicklungsart, id_WIcklungsart, Wicklungsart
FROM tbl_Typenschild t1, tbl_Wickeldaten t2, tbl_Wicklungsart t3
WHERE (t1.id_Typenschild=t2.sid_Wickeldaten) AND
(t2.sid_Wicklungsart=t3.id_Wicklungsart)
Ich möchte die Query1 mit der Query2 ref.verknüpfen(im Objektinspektor)-->bekomme ich nicht hin.

nehme ich anstatt der 2.Query eine Table und definiere für"Wicklungsart" ein Nachschlagefeld
und verknüpfe dann Query1 mit Table1 --> kein Problem.

wo ist denn mein Problem und wie bekomme ich das hin
Danke Klaus

[edit=r_kerber]SQL-Tags gesetzt. Mfg, r_kerber[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#5

Re: sql

  Alt 1. Dez 2003, 02:20
Hi Klaus,

um das zu beantworten, müsstest Du schon die Tabellendefinitionen rüberrücken und biite nicht abkürzen (ref.Verknüpfen = referentiell verknüpfen?).

Nicht als Meckerei, sondern als Tip gemeint:
1. Man kann auch SQL-Statements so formatieren, das man selbst (und andere) besser den Überblick behalten.
2. Wenn Du schon Aliasse für die Tabellennamen benutzt (ist sinnvoll!), dann steele sie auch den Feldnamen voran - das vermeidet Konfusion.
3. bei 3 Tabellen und mehr, solltest Du Dir angewöhnen, mit joins zu arbeiten - erhöht die Lesbarkeit.
z.B.:
aus
SQL-Code:
SELECT id_Motorart, Motorart, id_Typenschild, sid_Motorart, sid_Fabrikat,
Typ, Drehzahl, Motornummer, Leistung_KW, id_Fabrikat, Fabrikat
FROM tbl_Motorart t1, tbl_Typenschild t2, tbl_Fabrikat t3
WHERE (t1.id_Motorart=t2.sid_Motorart) AND(t2.sid_Fabrikat=t3.id_Fabrikat)
wird dann:
SQL-Code:
    SELECT MA.id_Motorart
           ,MA.Motorart
           ,TS.id_Typenschild
           ,TS.sid_Motorart
           ,TS.sid_Fabrikat
           ,TS.Typ
           ,TS.Drehzahl
           ,TS.Motornummer
           ,TS.Leistung_KW
           ,FB.id_Fabrikat
           ,FB.Fabrikat

      FROM tbl_Motorart AS MA
INNER JOIN tbl_Typenschild AS TS
        ON TS.sid_Motorart = MA.id_Motorart
INNER JOIN tbl_Fabrikat AS FB
        ON FB.id_Fabrikat = MA.sid_Fabrikat

           -- hier kommt dann eine echte Einschränkung, d.h. nicht die Bedingungen
           -- für die Joins sondern z.B.:
     WHERE TS.Leistung_KW > 50
       AND FB.Fabrikat in ('Siemens','Bosch','Allied Signal','Matsushita')
das macht es Dir wesentlich leichter, SQL-Statements zu lesen und der zeitliche Mehraufwand beim Formatieren wird mehr als wettgemacht durch schnelleres lesen (z.B. nach einem halben Jahr )

Also - poste mal Deine TabellenStruktur, und Dir wird gehülft
Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#6

Re: sql

  Alt 1. Dez 2003, 05:54
Hallo Klaus,

Zitat von Klaus D.:
das oben genannte Problem ist gelöst,
Und woran lag es?
  Mit Zitat antworten Zitat
Klaus D.

Registriert seit: 27. Okt 2003
Ort: 03238 Finsterwalde
124 Beiträge
 
Delphi 6 Professional
 
#7

Re: sql

  Alt 1. Dez 2003, 19:24
Gruß
Ich habe als zip-Datei meine Datenbankstruktur hinterlegt(als Bild):
http://www.daberehlert.de/Arc32.zip

r_kerber: Und woran lag es(!die Klammern!)

danke und Tschüß aus Finsterwalde.......Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#8

Re: sql

  Alt 1. Dez 2003, 22:51
mir ist immer noch nicht ganz klar, was Du mit
Zitat:
2 Querys referentiell verknüpfen
meinst. Kenne Referentielle Bezüge/Integritäten zwischen Tabellen einer DB, nicht jedoch zwischen 2 Querys/Abfragen. Aber vielleicht hab ich nur mal wieder 'nen Knoten im Kopf.
Also wenn ich nicht irre möchtest Du sowas: (?)
SQL-Code:
         SELECT MA.id_Motorart
                 ,MA.Motorart
                 ,TS.id_Typenschild
-- ,TS.sid_Motorart -- unnötig, da gleich MA.id_Motorart
-- ,sid_Fabrikat -- dto. FB.id_Fabrikat
                 ,TS.Typ -- auf Deinem Plan nicht zu sehen aus welcher Tabelle
                 ,TS.Drehzahl -- dto. (eventuell Tabellen-Präfix berichtigen)
                 ,TS.Motornummer -- dto.
                 ,TS.Leistung_KW -- dto.
                 ,FB.id_Fabrikat
                 ,FB.Fabrikat
                 ,WD.id_Wickeldaten
                 ,WA.id_Wicklungsart
                 ,WA.Wicklungsart

           FROM tbl_Motorart MA
     INNER JOIN tbl_Typenschild TS
             ON TS.sid_Motorart = MA.id_Motorart
     INNER JOIN tbl_Fabrikat FB
             ON FB.id_Fabrikat = MA.sid_Fabrikat
-- die nexten Tabellen als left outer, weil ich davon ausgehe, dass nicht zu jedem Typenschild
-- zwingend ein Eintrag in tbl_Wickeldaten existiert wenn doch, dann kannst Du sie auch
-- inner joinen:
LEFT OUTER JOIN tbl_Wickeldaten WD
             ON WD.sid_TypenSchild = TS.id_TypenSchild
LEFT OUTER JOIN tbl_WicklungsArt WA
             ON WA.id_WicklungsArt = WD.sid_WicklungsArt

     WHERE (TS.Typ like :p1) -- Tabellenpräfixe checken und ggF. anpassen
        OR (TS.Fabrikat like :p1)
        OR (TS.Drehzahl like :p1)
        OR (TS.Motornummer like :p1)
        OR (TS.Leistung_KW like :p1)
Das sollte schnuckeln...
Gruß

Edit: PS: ich habegerade gesehen, das die WickeldatenQuery in Deiner Text.rtf falsch ist - das letzte Komma vor dem FROM ist zuviel (beliebter Fehler - deshalb habe ich mir die Schreibweise mit vorangestelltem Komma (s.o.) angewöhnt, da man so mit cut&paste Spalten vertauschen kann, ohne Stress zu bekommen)
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Klaus D.

Registriert seit: 27. Okt 2003
Ort: 03238 Finsterwalde
124 Beiträge
 
Delphi 6 Professional
 
#9

Re: sql

  Alt 2. Dez 2003, 18:25
Morgen und Danke
Ich werde es mir gleich anschauen.(komme gerad von der Arbeit)
mit referentiell verknüpfen meine ich:die Referentielle Integrität zwischen den beiden Query's im Objektinspektor
oder zu Laufzeit)herstellen.
--------------------------------------------------
Ich habe einfach 2 DBGrid auf meine Form .
DBGrid(1)--->Query(1)
DBGrid(2)--->Query(2)
der User hat nur die Möglichkeit im Grid(1) zu arbeiten und zu suchen.
Die Query (2) darf eben nur die datensätze liefern die zu den aktiven Datensatz in Query (1) gehören.
oder nehme ich doch anstatt einer 2.Query einfach eine Table und erstelle Nachschlagefelder
für die Polzahl,Nutenzahl u.s.w.

Danke für Deine Ausdauer.Tschüß Klaus

Knoten im Kopf ?....kennnnn ich, lag aber bestimmt an meine Ausdrucksweise,
erkläre doch mal jemanden ein Problem wenn man selber nicht so richtig das Problem versteht !
Ich betreibe das Proggen eben nur als Hobby und mein größtes Problem ist mein Zeitproblem.
aber was soll's Danke für die schnelle Hilfe
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#10

Re: sql

  Alt 2. Dez 2003, 18:28
Zitat von Klaus D.:
mit referentiell verknüpfen meine ich:die Referentielle Integrität zwischen den beiden Query's im Objektinspektor
Sollte man die RI nicht auf der DB definieren?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 12:10 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