AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [SQL] JOIN joint zu oft
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL] JOIN joint zu oft

Ein Thema von Medium · begonnen am 14. Jan 2010 · letzter Beitrag vom 14. Jan 2010
 
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: [SQL] JOIN joint zu oft

  Alt 14. Jan 2010, 13:26
Zitat von mkinzler:
Oder ein Join auf einen View über die Summen oder eine derived table
Uhlala, Neuland für den kleinen Medium . Müsst ich erstmal eine kleine Lern-Session für einlegen.

@p80286: Völlig richtig, die 3 Angaben bilden den Index. Übrigens: Die Chargennummer ist nicht eine frei vergebene, sondern ein Produktionsauftrag kann für N Chargen gestartet werden. Für jede Charge wird dann ein neuer Kopf+Positionen eingetragen, und die Chargennummer ist dann fortlaufend. Da das Vorgabedatum aber für jeden Chargenstart, nicht für den ersten tatsächlichen Auftragsstart eingetragen wird, ist das Feld für eine Eindeutigkeitsbeziehung eigentlich überflüssig.
Anfügen von "AND p.Charge = k.Charge" im JOIN bewirkt daher auch leider keine Änderung

Wenn ich irgendwie 2 Schritte machen könnte, wäre das ganze vergleichsweise einfach. Ein Subselect wäre z.B. genial, dann wär's ein Kinderspiel. Ich fürchte ich muss mich tatsächlich in Views einlesen. Wobei ich immernoch der Meinung bin, dass das eigentlich alles in einem Statement möglich sein müsste. So rein instinktiv


Edit
Ich bin ja schon ein Trottel. MySQL 4.1 kennt Subselects! Aber... leider sind die keine Lösung
Folgendes Statement bringt das richtige Ergebnis:
SQL-Code:
SELECT
  k.REZ_NAME AS REZ_NAME,
  k.KOMMENT AS TEXT,
  (SELECT COUNT(Rez_Name) FROM rkohis WHERE Rez_Nr = 1)*1.0 AS Anz,
  ROUND(SUM(p.ANTEIL_I))*1.0 AS Menge
FROM
  rpohis p JOIN rkohis k ON p.REZ_NR = k.REZ_NR AND p.V_Dat = k.V_Dat AND k.Charge = p.Charge
WHERE
  p.Rez_Nr = 1
GROUP BY
  k.REZ_NAME
ORDER BY
  k.REZ_NAME
Aber! Die WHERE-Clause im äusseren Statement ist nicht immer nur so simpel. Der Anwender kann wählen welche Rezepte alle genommen werden sollen, so dass es auch mal heissen kann: "WHERE p.Rez_Nr = 1 OR p.Rez_Nr = 8 OR p.Rez_Nr = 21 OR ... OR ..."
Das ist mit dem Subselect dann schon wieder nicht mehr so einfach vereinbar fürchte ich
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
 


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 20:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz