AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Ergebnis einer StoredProc innerhalb anderer StoredProc "zwischenparken"
Thema durchsuchen
Ansicht
Themen-Optionen

Ergebnis einer StoredProc innerhalb anderer StoredProc "zwischenparken"

Ein Thema von Codehunter · begonnen am 20. Dez 2018 · letzter Beitrag vom 21. Dez 2018
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Ergebnis einer StoredProc innerhalb anderer StoredProc "zwischenparken"

  Alt 21. Dez 2018, 08:24
SQL-Code:
select a.* from tabelle a
join (select distinct 'idfrom andereprozedur(irgendeinparameter)) b on b.id = a.feld1
where p2.id is null
Laut Leistungsananlyse von IBExpert nur jeweils 1 Durchlauf (mit meinen Testtabellen...
Interessante Idee. Auf einen Join wäre ich in dem Zusammenhang nicht gekommen. Ich vermute mal "p2.id" war hier ein Irrtum und "b.id" gemeint?
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Ergebnis einer StoredProc innerhalb anderer StoredProc "zwischenparken"

  Alt 21. Dez 2018, 09:22
SQL-Code:
select a.* from tabelle a
join (select distinct 'idfrom andereprozedur(irgendeinparameter)) b on b.id = a.feld1
where p2.id is null
Laut Leistungsananlyse von IBExpert nur jeweils 1 Durchlauf (mit meinen Testtabellen...
Interessante Idee. Auf einen Join wäre ich in dem Zusammenhang nicht gekommen. Ich vermute mal "p2.id" war hier ein Irrtum und "b.id" gemeint?
Richtig

War ja auch schon spät...

Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Ergebnis einer StoredProc innerhalb anderer StoredProc "zwischenparken"

  Alt 21. Dez 2018, 09:51
SQL-Code:
select a.* from tabelle a
join (select distinct 'idfrom andereprozedur(irgendeinparameter)) b on b.id = a.feld1
where p2.id is null
Funktioniert leider nicht so wie gedacht. Denn dann würden nur diejenigen Datensätze zurückgegeben, wo a.feld1 = NULL ist. Entpricht also funktional nicht
SELECT * FROM A WHERE NOT A.FELD1 IN (SELECT DISTINCT ´ID´ FROM AndereProzedur(IrgendeinParameter));
Man beachte das NOT: ... WHERE **NOT** A.FELD1 IN (SELECT DISTINCT ... Ohne das ginge das mit einem Join aber so fällt mir da spontan keine Lösung ein.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#14

AW: Ergebnis einer StoredProc innerhalb anderer StoredProc "zwischenparken"

  Alt 21. Dez 2018, 09:55
Aber da fehlt doch dann nur das "left" vorm "join"

noch mal sorry, kleines Durcheinander
Gruß, Jo

Geändert von jobo (21. Dez 2018 um 09:58 Uhr)
  Mit Zitat antworten Zitat
Alt 21. Dez 2018, 10:06     Erstellt von Codehunter
Dieser Beitrag wurde von mkinzler gelöscht.
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Ergebnis einer StoredProc innerhalb anderer StoredProc "zwischenparken"

  Alt 21. Dez 2018, 10:54
SQL-Code:
select a.* from tabelle a
join (select distinct 'idfrom andereprozedur(irgendeinparameter)) b on b.id = a.feld1
where p2.id is null
Funktioniert leider nicht so wie gedacht. Denn dann würden nur diejenigen Datensätze zurückgegeben, wo a.feld1 = NULL ist. Entpricht also funktional nicht
SELECT * FROM A WHERE NOT A.FELD1 IN (SELECT DISTINCT ´ID´ FROM AndereProzedur(IrgendeinParameter));
Man beachte das NOT: ... WHERE **NOT** A.FELD1 IN (SELECT DISTINCT ... Ohne das ginge das mit einem Join aber so fällt mir da spontan keine Lösung ein.
Sorry, ich habe das gestern tatsächlich ohne dem NOT getestet.
Es geht zwar mit left join, aber die Anzahl der Reads hier deutlich größer.

Ich fürchte, bei NOT IN ... wird wohl eine zusätzliche Tabelle die besten Ergebnisse bringen.

Frank
Frank Reim
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#16

AW: Ergebnis einer StoredProc innerhalb anderer StoredProc "zwischenparken"

  Alt 21. Dez 2018, 11:02
Ein gelockertes Join Kriterium muss ja meist mehr Read produzieren. Find ich erstmal kein k.o. Kriterium. Und dabei kommt es ja dann auf die Mengengerüste beider Seiten an. Gibt es viele auszuschließende Datensätze oder andersrum ..
Ob das codehunter taugt, kann er wohl nur selbst testen.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: Ergebnis einer StoredProc innerhalb anderer StoredProc "zwischenparken"

  Alt 21. Dez 2018, 11:03
Aber da fehlt doch dann nur das "left" vorm "join"

noch mal sorry, kleines Durcheinander
Hatte ich auch schon probiert, kommt letztlich aber das Gegenteil von dem heraus was rauskommen soll: Alle Datensätze aus Tabelle a wo der Wert in a.feld1 nicht in der Ergebnismenge von AndereProzedur() vorkommt. Bei einem Join (mit oder ohne Left) kommen aber genau die Datensätze, die nicht kommen sollen.

EDIT: Ich hänge heute irgendwie hinterher. Ihr wart immer schneller mit antworten Ich hab halt auch das Gefühl, Firebird ist in manchen Dingen anderen Datenbanken wie MariaDB usw. unterlegen. Bei MariaDB kann ich mit CREATE TEMPORARY TABLE ´PARKPLATZ´ FOR SELECT DISTINCT ... einen solchen Parkplatz bauen wie im Eingangspost angedacht. Bei Firebird ist das deutlich mehr Arbeit.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter (21. Dez 2018 um 11:21 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#18

AW: Ergebnis einer StoredProc innerhalb anderer StoredProc "zwischenparken"

  Alt 21. Dez 2018, 11:13
Hatte ich auch schon probiert, kommt letztlich aber das Gegenteil von dem heraus was rauskommen soll: Alle Datensätze aus Tabelle a wo der Wert in a.feld1 nicht in der Ergebnismenge von AndereProzedur() vorkommt. Bei einem Join (mit oder ohne Left) kommen aber genau die Datensätze, die nicht kommen sollen.
Das dürfte aber keine Frage von mit oder ohne LEFT sein, sonder jedenfalls ein OUTER join und da dann eine Frage von LEFT oder RIGHT mit dem passenden IS NULL.

Ich bin gerade schon mit den Statements (Vorlage von Dir und Anpassung von dataspider) durcheinander gekommen. Das müsste bei Dir doch schnell erledigt sein, dass Du das Gegenteil von dem was du jetzt bekommst. (Hätte ich in der Grundschule bloß besser aufgepasst)
Gruß, Jo
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#19

AW: Ergebnis einer StoredProc innerhalb anderer StoredProc "zwischenparken"

  Alt 21. Dez 2018, 11:15
..Ihr wart immer schneller mit antworten
Das müsstest Du doch kennen von diesem Forum!
Es fehlt nur noch ein winziges Stück und die Antworten kommen vor dem Eröffnungspost.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#20

AW: Ergebnis einer StoredProc innerhalb anderer StoredProc "zwischenparken"

  Alt 21. Dez 2018, 11:24
..Ihr wart immer schneller mit antworten
Das müsstest Du doch kennen von diesem Forum!
In der Tat wundere ich mich öfters wie schnell einem hier geholfen wird. Manchmal verbunden mit dem schlechten Gewissen, mehr zu bekommen als man zurückgeben kann. Aber hilft einem ja auch schon das nachlesen in solchen Diskussionen, sodass es später trotzdem für andere hilfreich sein kann.

Es fehlt nur noch ein winziges Stück und die Antworten kommen vor dem Eröffnungspost.
Dazu müsste man wohl das Template von Blau auf Rot umstellen und einen Sound abspielen der "Ho Ho Ho" sagt
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 08:37 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