AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem beim erstellen einen Selectes
Thema durchsuchen
Ansicht
Themen-Optionen

Problem beim erstellen einen Selectes

Ein Thema von Dumpfbacke · begonnen am 17. Nov 2021 · letzter Beitrag vom 21. Nov 2021
Antwort Antwort
Seite 1 von 2  1 2      
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
332 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Problem beim erstellen einen Selectes

  Alt 17. Nov 2021, 07:07
Datenbank: Firebird • Version: 2.5 • Zugriff über: UniDAC
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.
Tanja
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Problem beim erstellen einen Selectes

  Alt 17. Nov 2021, 07:15
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')
Peter
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#3

AW: Problem beim erstellen einen Selectes

  Alt 17. Nov 2021, 07:19
Moin...

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;
Index auf Feld 'Fach'
kein "like" verwenden weil sonst der Index nicht greift
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Problem beim erstellen einen Selectes

  Alt 17. Nov 2021, 07:27
@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.
Ich denke die Abfrage soll die Datensätze treffen, in denen der Lagerort ausschließlich Schraube_50 enthält.
Peter
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#5

AW: Problem beim erstellen einen Selectes

  Alt 17. Nov 2021, 07:36
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.
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?

...soviel zum Thema:
Zitat:
In der Hoffnung die Frage richtig verstanden zu haben

Geändert von haentschman (17. Nov 2021 um 07:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

AW: Problem beim erstellen einen Selectes

  Alt 17. Nov 2021, 07:41
Nein, es sind 3. In Schublade 3 kommt auch Nagel_20 vor, deshalb soll sie nicht auftauchen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#7

AW: Problem beim erstellen einen Selectes

  Alt 17. Nov 2021, 08:08
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')
Fach ='' ist aber doch erlaubt, das exist select ignoriert aber nur Fach IS NULL . Oder übersehe ich da was?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#8

AW: Problem beim erstellen einen Selectes

  Alt 17. Nov 2021, 08:10
Zitat:
In Schublade 3 kommt auch Nagel_20 vor, deshalb soll sie nicht auftauchen.
...ich muß mir angewöhnen nicht alles zu hinterfragen.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Problem beim erstellen einen Selectes

  Alt 17. Nov 2021, 09:43
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')
Fach ='' ist aber doch erlaubt, das exist select ignoriert aber nur Fach IS NULL . Oder übersehe ich da was?
Stimmt. Ich lasse diese Lücke mal als Übung offen.
Peter
  Mit Zitat antworten Zitat
Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
332 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Problem beim erstellen einen Selectes

  Alt 21. Nov 2021, 11:10
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
Tanja
  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 00:56 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