Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem beim erstellen einen Selectes (https://www.delphipraxis.net/209271-problem-beim-erstellen-einen-selectes.html)

Dumpfbacke 17. Nov 2021 06:07

Datenbank: Firebird • Version: 2.5 • Zugriff über: UniDAC

Problem beim erstellen einen Selectes
 
Hallo Delphianer,
ich habe ein Problem und ich bekomme es einfach nicht hin einen Select zu erstellen.

Ich habe eine Tabelle an der ich leider nichts ändern kann. Hier mal ein Teil der Tabelle welche relevant für den Select ist.

Delphi-Quellcode:
Schrank Schublade Fach
1       1         Schraube_50
1       1         Nagel_10
1       1
1       2         Schraube_50
1       2
1       2
1       2
1       3         Schraube_50
1       3         Magel_10
1       3         Nagel 20
1       4         Schraube_50
1       4         Schraube_50
1       4
1       4
Es kann sein das im Feld Fach etwas drin steht oder nicht. Die Anzahl der Zeilen kann unterschiedlich sein.

Ich möchte als Ergebis dieses hier haben:


Delphi-Quellcode:
Schrank Schublade Fach
1       2         Schraube_50
1       4         Schraube_50
Ich möchte als Ergebnis den Schrank und die Schublade haben bei denen nur Schraube_50 im Feld Fach vorkommt. Es kann auch zwei mal vorkommen. Sobald mindestes in einen Zeile ein andere Wert wie z.B. Nagel steht soll diese Zeile nicht im Ergebnis erscheinen.

Könnt Ihr mir hier bitte helfen ich habe es mit Left Outer Join und Group versucht nur leider bekomme ich es einfach nicht hin. Ich vermute einmal ich habe hier den falschen Ansatz und es geht doch ganz anders. Das falsche Ergebnis dauert auch recht lange (Überprüft mit IBExpert) bei mir da die Datenbank etliche Datensätze enthält. 25 Mio aber das Ergebnis solte kleiner 500 sein. Dauert ca. 3 Minuten aber da kommt bestimmt noch vom falschen Ansatz hier oder ich muss einen Index anders setzten

Danke schon einmal

Tanja.

Jasocul 17. Nov 2021 06:15

AW: Problem beim erstellen einen Selectes
 
Mal auf die Schnelle:
Code:
select Schrank
     , Schublade
     , Fach
  from Tabelle
 where Fach = 'Schraube_50'
   and not exists (select 1 from Tabelle where Fach <> 'Schraube_50')

haentschman 17. Nov 2021 06:19

AW: Problem beim erstellen einen Selectes
 
Moin...8-)

In der Hoffnung die Frage richtig verstanden zu haben...

Code:
select distinct Schrank, Schublade from Tabelle where Fach = 'Schraube_50'
Delphi-Quellcode:
Qry.SQL.Text := 'select distinct Schrank, Schublade from Tabelle where Fach = :FAC';
Qry.ParamByName('FAC').AsString := 'Schraube_50';
Qry.Open;
:warn: Index auf Feld 'Fach'
:warn: kein "like" verwenden weil sonst der Index nicht greift

Jasocul 17. Nov 2021 06:27

AW: Problem beim erstellen einen Selectes
 
@haentschman:
Bei deiner Abfrage wäre unter anderem auch 1 1 dabei. Aber dort liegen auch Nägel. Ich hatte am Anfang den selben Denkfehler. :wink:
Ich denke die Abfrage soll die Datensätze treffen, in denen der Lagerort ausschließlich Schraube_50 enthält.

haentschman 17. Nov 2021 06:36

AW: Problem beim erstellen einen Selectes
 
Das ist richtig...
Zitat:

Ich möchte als Ergebnis den Schrank und die Schublade haben bei denen nur Schraube_50 im Feld Fach vorkommt
...und das sind 4 Schubladen. :wink:
Zitat:

Schrank Schublade Fach
1 1 Schraube_50
1 2 Schraube_50
1 3 Schraube_50
1 4 Schraube_50
Zitat:

in denen der Lagerort ausschließlich Schraube_50 enthält
Was ist denn das für eine Lagerhaltung wenn ich die "Menge" der Schrauben (Schubladen) nicht berücksichtige, wenn ich nur einen Nagel dazulege? :gruebel:

...soviel zum Thema:
Zitat:

In der Hoffnung die Frage richtig verstanden zu haben
:stupid:

DeddyH 17. Nov 2021 06:41

AW: Problem beim erstellen einen Selectes
 
Nein, es sind 3. In Schublade 3 kommt auch Nagel_20 vor, deshalb soll sie nicht auftauchen.

Uwe Raabe 17. Nov 2021 07:08

AW: Problem beim erstellen einen Selectes
 
Zitat:

Zitat von Jasocul (Beitrag 1497698)
Mal auf die Schnelle:
Code:
select Schrank
     , Schublade
     , Fach
  from Tabelle
 where Fach = 'Schraube_50'
   and not exists (select 1 from Tabelle where Fach <> 'Schraube_50')

Delphi-Quellcode:
Fach =''
ist aber doch erlaubt, das exist select ignoriert aber nur
Delphi-Quellcode:
Fach IS NULL
. Oder übersehe ich da was?

haentschman 17. Nov 2021 07:10

AW: Problem beim erstellen einen Selectes
 
Zitat:

In Schublade 3 kommt auch Nagel_20 vor, deshalb soll sie nicht auftauchen.
...ich muß mir angewöhnen nicht alles zu hinterfragen. :stupid::oops:

Jasocul 17. Nov 2021 08:43

AW: Problem beim erstellen einen Selectes
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1497703)
Zitat:

Zitat von Jasocul (Beitrag 1497698)
Mal auf die Schnelle:
Code:
select Schrank
     , Schublade
     , Fach
  from Tabelle
 where Fach = 'Schraube_50'
   and not exists (select 1 from Tabelle where Fach <> 'Schraube_50')

Delphi-Quellcode:
Fach =''
ist aber doch erlaubt, das exist select ignoriert aber nur
Delphi-Quellcode:
Fach IS NULL
. Oder übersehe ich da was?

Stimmt. Ich lasse diese Lücke mal als Übung offen. :wink:

Dumpfbacke 21. Nov 2021 10:10

AW: Problem beim erstellen einen Selectes
 
Danke an alle die mir geholfen haben . Ich habe es hinbekommen. Es war nicht noch die Lücke mit den leeren Feldern sondern Select hinter exisits wird immer 1 da immer ein Datensatz gefunden wird. Aber kein Problem mit dem schubs in die richtige Richtunf habe ich es hinbekommen. Einen schönen Sonntag noch für alle.

Tanja


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr.
Seite 1 von 2  1 2      

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