thepinky777
Goto Top

SQL Abfrage irgendwie filtern

Hallo,

ich habe folgendes Problem und irgendwie bin ich zu doof dafür face-smile ich gebs ja zu.

also ich will eine SQL Abfrage machen, ich beschreib mal das Problem:

Rechnungen_Table

Hier hol ich entsprechend eine Rechnung raus (Datum), da bekomme ich 2 Sachen mit denen ich weitere Tables verknüpfe:
Kundennummer ->> verknüpft mit Kunden_Table
ArtikelNummer (der verkauft wurde) ->> verknüpft mit ArtikelPreisliste_Table

Kunden_Table
hier bekomm ich raus welcher Kundengruppe er angehört, was wiederum verknüpft ist mit ->> Kundengruppe_Table

Kundengruppe_Table:
Hier bekommt man raus welche Preislisten für den Kunden hinterlegt sind.
Preisliste ->> ArtikelPreisliste_Table


Wie wir sehen kommen wir hier auf zwei wegen auf die ArtikelPreiliste_Table.
Hier kann man sich vorstellen sind für jeden Artikel sagen wir mal ca. 10 Preislisten hinterlegt.

Ich will nun aber den Basispreis des Artikels rausbekommen und nur die Preise gemäß den Preislisten die für den Kunden aktuell sind.

Frage:
geht das überhaupt das man so doppelt gemoppelt in einer SQL Abfrage auf ein Table sich verknüpfen kann ?
Anderer seits hab ich das Problem das eben alle Preislisten Preise des Artikels gelistet werden und nicht nur der Kundengruppe entsprechende Preislisten.
Mit verknüpfen mein ich leider das es so grafisch ist, und kein direkter SQL Code, da das system leider so grafisch basierend arbeitet (ERP).
Es gibt das die möglichkeit eben tables zu verknüpfen mit table1.feld1 = table2.feld1 oder man kann so Kriterien noch einstellen (denke mal Filter).
Oder man kann dann direkt noch davon unabhängige filter verwenden um die anzeige des ergebnisses einzugrenzen, z.B.
table.rechnungsdatum >= StartDatum (das man festlegt) und table.rechnungsdatum <= EndDatum (das man festlegt) als parameter.
ist so ähnlich denk ich mal wie crystal reports was das grafische angeht.

wäre dankbar wenn jemand tips hat oder seiten wo man das ganze nachlesen könnte.

das problem ist eigentlich das ich etwas liste und das ergebnis quasi in der selben abfrage aus nem anderen table entsprechend rausfilter möchte.
mit vbs oder php hab ich das immer so gelost das ich eine sql abfrage 1 gemacht hab, damit ne schleife mit entsprechend dynamisch generierter sql abfrage nummer 2 (aus dem ergebnis der ersten abfrage) und beliebig wiederholt um am ende die gefilerten ergebnisse zu erziehlen. aber das muss ja irgendwie auch direkt gehen, und hier hab ich keine möglichkeit so aussenrum zu scripten face-smile

Content-ID: 221863

Url: https://administrator.de/contentid/221863

Ausgedruckt am: 03.12.2024 um 17:12 Uhr

certifiedit.net
certifiedit.net 13.11.2013 um 09:28:35 Uhr
Goto Top
Hallo,

wenn ich dich richtig verstanden habe brauchst du nur einen Join. Infos bräuchte man aber dennoch (SQL Server gibt es viele ;) )

LG,

Christian
SlainteMhath
SlainteMhath 13.11.2013 um 09:40:28 Uhr
Goto Top
Moin,

Ich nehme an den Support des ERP Herstellers zu befragen steht nicht zur Debatte, oder? face-smile

Ansonsten ist deine Frage 1. recht verworren face-smile und 2. fehlen essentielle Infos (Welches ERP? Welcher SQL? usw...)

Grundsätzlich kann man auf (fast) jeden SQL Server die gleiche Tabelle mehrmals in einem SELECT verwerden
Etwa so:
 
SELECT * FROM Tabelle as tab1
LEFT JOIN Tabelle2 as tab 2 on tab1.id = tab2.id
....

lg,
Slainte
ThePinky777
ThePinky777 13.11.2013 aktualisiert um 09:57:23 Uhr
Goto Top
Hallo,

also ich versuchs so genau wie möglich zu erklären.

die datenbank läuft auf nem Server 2008 R2 Enterprise, SQL Server 2008.

Aber die Abfrage wird im ERP System selbst erstellt mit so nem Editor, keine Möglichkeit direkt Code einzugeben.
Es gibt eine Lasche namens "Phase Erstellen" und da kann ich die Tables reinpflanzen auf die ich bock hab und sie mit pfeilen verknüpfen mit entsprechenden kriterien.
so
dann generiert er nen Code (kann man aber nicht direkt editieren nur durch klicki bunti leider), keine Ahnung ob dich das weiter bringt, Oben hab ichs nur vereinfacht beschrieben, in wirklichkeit hängen noch einige weitere tables mit dran, daher nicht erschrecken wenn man den code sieht.

for each InvcDtl no-lock , each Part no-lock where (InvcDtl.Company = Part.Company and InvcDtl.PartNum = Part.PartNum ) , each InvcHead no-lock where InvcHead.Posted = True And InvcHead.InvoiceDate >= {FromDate} And InvcHead.InvoiceDate <= {ToDate} , each Customer no-lock where (InvcHead.Company = Customer.Company and InvcHead.CustNum = Customer.CustNum ) , each SalesRep no-lock where (Customer.Company = SalesRep.Company and Customer.SalesRepCode = SalesRep.SalesRepCode ) , each SalesTer no-lock , each ProdGrup no-lock , each PartCost no-lock , each CustGrup no-lock , each TaxRgn no-lock , each PriceLstParts no-lock , each CustGrupPriceLst no-lock where (CustGrupPriceLst.ListCode = PriceLstParts.ListCode ) where (InvcDtl.Company = InvcHead.Company and InvcDtl.InvoiceNum = InvcHead.InvoiceNum ) where (Customer.Company = SalesTer.Company and Customer.TerritoryID = SalesTer.TerritoryID ) where (Part.Company = ProdGrup.Company and Part.ProdCode = ProdGrup.ProdCode ) outer-join where (Part.PartNum = PartCost.PartNum ) where (Customer.Company = CustGrup.Company and Customer.GroupCode = CustGrup.GroupCode ) where (Customer.Company = TaxRgn.Company and Customer.TaxRegionCode = TaxRgn.TaxRegionCode ) where (CustGrup.Company = CustGrupPriceLst.Company and CustGrup.GroupCode = CustGrupPriceLst.GroupCode ) where (Part.Company = PriceLstParts.Company and Part.PartNum = PriceLstParts.PartNum ).


Das ERP System heißt Epicor. und dafür bekommt man keinen Support, wenn dann nur nen Consultant der nach Stunden verrechnet wird... face-smile da das ja eine customization ist. naja und ich würds halt auch gern mal kapieren face-smile dumm sterben sollen andere face-smile
certifiedit.net
certifiedit.net 13.11.2013 um 10:11:14 Uhr
Goto Top
Zitat von @ThePinky777:

Das ERP System heißt Epicor. und dafür bekommt man keinen Support, wenn dann nur nen Consultant der nach Stunden
verrechnet wird... face-smile da das ja eine customization ist. naja und ich würds halt auch gern mal kapieren face-smile dumm sterben sollen
andere face-smile

Dann wäre eine Schulung das richtige für dich.