php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 28-04-2008, 23:34
JCDenton
 Newbie
Links : Onlinestatus : JCDenton ist offline
Registriert seit: Jan 2007
Beiträge: 50
JCDenton ist zur Zeit noch ein unbeschriebenes Blatt
Standard komplizierte Anfrage an merkwürdiger Datenbank

Hallo,

ich hab eine komische, nicht von mir strukturierte, SQL Datenbank in Access vorliegen. In dieser Datenbank (s.u. Teilauszug der DB)) soll ich für jedes Enderzeugnis die Arbeitsplätze (ArbPlatz) bestimmen. Ein Enderzeugnis besteht immer aus mehreren Materialen (rechte Tabelle, Ebene 1-6).
Ein Teilerzeugnis kann wiederrum aus mehreren Materialien bestehen.
Somit wird ein Enderzeugnis an mehreren ArbPlätzen hergestellt. Leider komme ich mir der Struktur der rechten Tabelle nicht klar bzw. mit der "Relation" Enderzeugnis->Ebene1->Ebene2->Ebene3->Ebene4->Ebene5->Ebene 6. Mir fehlt irgendwie der Ansatz wie ich damit klarkommen soll. Hat jemand vielleicht einen Hinweis?

Schonmal vielen Dank für eure Antworten!

Hier die Tablle




JCD

Geändert von JCDenton (28-04-2008 um 23:37 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 28-04-2008, 23:35
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Dir fehlt vor allem der Ansatz das Problem konkret zu erläutern! Zeig mal Tabellenlayout her und erklär grafisch!
Mit Zitat antworten
  #3 (permalink)  
Alt 28-04-2008, 23:40
JCDenton
 Newbie
Links : Onlinestatus : JCDenton ist offline
Registriert seit: Jan 2007
Beiträge: 50
JCDenton ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sorry, da hat was mit dem hochladen nicht geklappt. Ich hoffe die Erkärung macht mit dem Bild der Tabelle etwas mehr Sinn
Mit Zitat antworten
  #4 (permalink)  
Alt 29-04-2008, 11:47
JCDenton
 Newbie
Links : Onlinestatus : JCDenton ist offline
Registriert seit: Jan 2007
Beiträge: 50
JCDenton ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hat niemand eine kleine Idee wie ich die SQL Abfrage gestalten kann? Bin wirklich verzweifelt...

JCD
Mit Zitat antworten
  #5 (permalink)  
Alt 29-04-2008, 11:52
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich kann mich nur unset anschliessen. Beschreibe deine Tabellenstruktur, die Beziehungen, und v.a. etwas genauer, was du erreichen willst. Dein Bild hilft da nicht viel weiter.
__________________
Gruss
H2O
Mit Zitat antworten
  #6 (permalink)  
Alt 29-04-2008, 12:42
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Ich blick zwar auch nicht ganz durch, aber vermutlich musst du für jede Ebene einen Join mit der anderen Tabelle machen, um den Arbeitsplatz zuzuordnen. Eventuell geht dieser Join nur über eine dritte Tabelle, in der die Materialien stehen. Informiere dich mal über JOIN.
Mit Zitat antworten
  #7 (permalink)  
Alt 29-04-2008, 13:42
JCDenton
 Newbie
Links : Onlinestatus : JCDenton ist offline
Registriert seit: Jan 2007
Beiträge: 50
JCDenton ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Aso ich möchte für jedes Enderzeugnis (rechte Tabelle), das wiederum aus mehreren Materialien besteht (siehe "besteht aus Ebene X"=Material), die Arbeitsplätze der für dieses eine Enderzeunis bestimmen.

Aus meinem Beispiel besteht das Enderzeunis 000010002 aus den Materialien A002K0055003, D0001.... und K0001R.... .
K001R... besteht wiederum aus B0001... und S002KR.

Jedes dieser Materialen hat in der linken Tabelle einen Arbeitsplatz.

Jetzt möchte ich für das Enderzeugnis 000010002 sämtliche Arbeitsplätze bestimmen wo das Enderzeugnis und die Zwischenprodukte (A002K0055003, D0001.... und K0001R) und wiederum deren Zwischenprodukte hergestellt worden sind.

Ich hoffe, dass die Erklärung jetzt etwas mehr Sinn macht. Sorry!

JCD
Mit Zitat antworten
  #8 (permalink)  
Alt 29-04-2008, 14:01
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Wie sehen deine Ansätze aus?
Mit Zitat antworten
  #9 (permalink)  
Alt 29-04-2008, 18:39
JCDenton
 Newbie
Links : Onlinestatus : JCDenton ist offline
Registriert seit: Jan 2007
Beiträge: 50
JCDenton ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also mein Ansatz sieht so mit Join aus:

SELECT DISTINCT p.enderzeugnis, h.Material, p.[besteht aus (Ebene 1)], h.ArbPlatz
FROM [Gesamtstrukturstüli Ebene 1-6 gruppiert] AS p, [04 Fertigungsaufträge_gesamt] AS h
WHERE p.enderzeugnis=h.Material;

Jetzt sind da aber nur die Enderzeugnisse drin und nicht die Arbeitsplätze der "Zwischenmaterialien (Ebenen 1-6)". Ich kenne noch höchstens Unterabfragen in der Where Klausel, aber da hört es schon auf. Wie ich diese Relatiuon Enderzeugnis->Ebene 1-> Ebene2....->Ebene 6 und Ebene 1 ->Material da reinbekomme weiß ich wirklich nicht.

Am Ende soll ja nur dastehen:

Enderzeugnis XYZ: Arb1, Arb2, Arb3 und Arb4

wobei Arb1 vom Enderzeugnis stammt und Arb2 vom Zwischenmaterial 1 und Arb3 und Arb 4 von Zwischenmaterial 2.

JCD
Mit Zitat antworten
  #10 (permalink)  
Alt 29-04-2008, 20:04
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von JCDenton
Also mein Ansatz sieht so mit Join aus:
Wo ist denn da bitte ein Join? Ich sehe weder Left Join noch Inner Join oder irgend einen Join!
Mit Zitat antworten
  #11 (permalink)  
Alt 29-04-2008, 20:08
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

... FROM x, y ... WHERE x.a = y.b ...
ist auch ein Join.
Mit Zitat antworten
  #12 (permalink)  
Alt 29-04-2008, 20:29
JCDenton
 Newbie
Links : Onlinestatus : JCDenton ist offline
Registriert seit: Jan 2007
Beiträge: 50
JCDenton ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja genau. Also ein weiterer Ansatz wäre für jede Ebene ebenfalls ein Join zu machen, nur weiß ich nicht wie man diese "Klauseln" in Where richtig verküpft und sicherstellt, dass die relation Enderzeugnis-> Ebene 1->....-> Ebene 6 erhalten bleibt. Stehe da wirklich total auf dem Schlauch.

JCD
Mit Zitat antworten
  #13 (permalink)  
Alt 29-04-2008, 20:30
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

... nur belastender für den Server...
Mit Zitat antworten
  #14 (permalink)  
Alt 29-04-2008, 20:40
JCDenton
 Newbie
Links : Onlinestatus : JCDenton ist offline
Registriert seit: Jan 2007
Beiträge: 50
JCDenton ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die Effizienz ist egal. Bei der DB handelt es sich um eine Access Datenbank nicht um eine Server DB. Also die Rechenzeit ist egal!
Mit Zitat antworten
  #15 (permalink)  
Alt 29-04-2008, 23:57
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Ich hätte mir den Kommentar wohl verkneifen sollen.
Deine Frage, wie du die Verknüpfung in der WHERE-Klausel unterbingen kannst, erledigt sich von selbst, wenn du den Join mal ausschreibst. Stichwort ON-Klausel.
Wenn du das gemacht hast, fällt es sicherlich auch leichter, die weiteren Joins hinzuzufügen.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:16 Uhr.