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 06-11-2006, 00:09
IVAN
 Newbie
Links : Onlinestatus : IVAN ist offline
Registriert seit: May 2006
Beiträge: 12
IVAN ist zur Zeit noch ein unbeschriebenes Blatt
Standard Variable Tabellen- und Spaltennamen

Habe folgendes Problem.

In der Tabelle "teile" habe ich zwei Spalten in denen die Namen einer anderen Tabelle und deren Spalte eingtragen habe auf die ich verweisen will.
Nun möchte ich ein Join auf eine Tabelle und ein Spalte machen wobei ich derren Namen aus der Tabelle "teile" in der gleich abfrage beziehen möchte.
Die Zieltabelle ist somit variabel und ich benötige etwa ein solche ergebniss:

anzahl | feldname | tabname | bezeichnung
---------------------------------------------------------
89 | great_id | great03 | typ 345
34 | great_id | motor | 150kw

usw.

Habe so eine vorstellung wie hir, die natürlich so nicht funtzt!

PHP-Code:
$abfrage "SELECT teile.anzahl, teile.feldname AS feldname, teile.tabname AS tabname, 'tabname'.bezeichnug 
                FROM teile
                JOIN 'tabname'
                ON teile.teile_id='tabname'.'feldname'
                WHERE teile.anzahl>'0'"
;
$result mysql_query($abfrage); 

Wie kann ich die Werte aus feldname und tabname als Variablen verwenden?
Mit Zitat antworten
  #2 (permalink)  
Alt 06-11-2006, 00:28
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

Das Datenbankschema ist Murks. Beschreib mal bitte, was du abbilden möchtest. Ich bin sicher, es geht auch ohne solche Verrenkungen.
Mit Zitat antworten
  #3 (permalink)  
Alt 06-11-2006, 00:38
IVAN
 Newbie
Links : Onlinestatus : IVAN ist offline
Registriert seit: May 2006
Beiträge: 12
IVAN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja ist ganz schön Kurks und auch ein wenich gegen SQL-Sinn...

Ich will von der einen Tabelle zu einer anderen Joinnen, jedoch abhängig vom Inhalt der ersten Tabelle soll die Zieltabelle gwählt werden.

Richtig wäre es so eine Beziehung in vielle einzelne "Zwischentabellen" zu verlegen, qasi für jede Zieltabelle eine extra Tabelle wo halt die Anzahl der Teile usw. drinsteht.
Es sind jedoch viele Tabellen dan nötig und ich möchte mit nur einer oder nur sehr wenig Anfragen an mein Ziel kommen und nicht Für jede Tabelle eine Abfrage stellen.
Mit Zitat antworten
  #4 (permalink)  
Alt 06-11-2006, 00:47
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

Was dich zu diesem Unsinn verleitet hat, habe ich mir bereits denken können. Aber aus deinen wenigen (Beispiel-)Daten kann ich nicht schließen, welche Entitäten und Relationen du eigentlich speichern möchtest. Formuliere es doch bitte mal in der Art: "Jedes Auto besteht aus Teilen. Ein Teil kann ein Motor sein oder ein Reifen. Jedes Teil hat die Attribute Hersteller, ..."
Mit Zitat antworten
  #5 (permalink)  
Alt 06-11-2006, 01:09
IVAN
 Newbie
Links : Onlinestatus : IVAN ist offline
Registriert seit: May 2006
Beiträge: 12
IVAN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok vereinfacht:

Meine ersten Tabelle Autoteilelager in dem die Teileart, die Teilenummer und die Anzahl steht.
Desweiteren habe ich für jede Teileart eine Tabelle wo dan die Teile stehen mit der Teilenummer und den Eigenschaften.
So kann in der Tabelle Autoteilelager 10 Motoren aus der Tabelle Motor , 100 Autoreife aus der Tabelle Reifen stehen usw.

Ein bischen schwer zu erklären.
Mit Zitat antworten
  #6 (permalink)  
Alt 06-11-2006, 02: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

Schema:

typ(id, bezeichnung) <- bezeichnung = (Motor|Reifen|...)
teil(id, typ_id, ...)
lager(id, teil_id, ...)


Beispieldaten:

typ:
1, 'Reifen'
2, 'Motor'

teil:
1, 2, ...
2, 2, ...
3, 1, ...

lager:
1, 2, ...
2, 3, ...


Merke: Relationen müssen sich bereits im Schema wiederfinden, nicht erst in den Daten!
Mit Zitat antworten
  #7 (permalink)  
Alt 06-11-2006, 04:07
IVAN
 Newbie
Links : Onlinestatus : IVAN ist offline
Registriert seit: May 2006
Beiträge: 12
IVAN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich vermute du möchtest sowas haben.


lager:
lager_id | tabname | spaltenname | teile_id | anzahl
----------------------------------------------------------------
1 | motor | motor_id | 1 | 51
2 | motor | motor_id | 2 | 45
3 | reifen | reifen _id | 1 | 445
4 | getriebe | getriebe_id | 4 | 415


motor:
motor_id | gewicht
------------------------
1 | 75
2 | 120
3 | 34
4 | 30


reifen:
reifen_id | gewicht
------------------------
1 | 52
2 | 42
3 | 25
4 | 55


getriebe:
getriebe_id | gewicht
------------------------
1 | 400
2 | 50
3 | 40
4 | 60


Nun brauche ich eine Abfrage die mir folgendes ergebnis liefert sollte:

lager_id | teile_id | anzahl | gewicht
----------------------------------------------------------------
1 | 1 | 51 | 75
2 | 2 | 45 | 120
3 | 1 | 445 | 52
4 | 4 | 415 | 60
Mit Zitat antworten
  #8 (permalink)  
Alt 06-11-2006, 10:06
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Das ist Unfug.

Motor, Getriebe und Reifen zeichnen sich in diesem Beispiel alle durch eine Eigenschaft Gewicht aus.

Dann leg sie auch in einer Tabelle ab:
id | art | gewicht
Wobei art dann angibt, ob es sich um einen Motor, ein Getriebe oder einen Reifen handelt (natürlich nicht als Klartext, sondern ebenfalls als ID, die dann auf eine entsprechende Tabelle referenziert).
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #9 (permalink)  
Alt 06-11-2006, 12:14
IVAN
 Newbie
Links : Onlinestatus : IVAN ist offline
Registriert seit: May 2006
Beiträge: 12
IVAN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok das war jetzt klar!
das ist ein vereinfachtes beispiel und gewicht ist eins von sehr vielen spalten die sich eigentlich fast alle unterscheiden.

Also gibt es nun eine Möglichkeit mit einer art Variable wie ober schon beschrieben innerhalb einer Abfrage zu arbeiten oder vielleicht eine andere Lösung die nicht die Ganze DB auf den Kopf stellt?
Mit Zitat antworten
  #10 (permalink)  
Alt 06-11-2006, 12:31
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von IVAN
oder vielleicht eine andere Lösung die nicht die Ganze DB auf den Kopf stellt?
Dein ganzes Datenmodell steht auf dem Kopf bzw. liegt schief auf der Seite - also stelle es jetzt gerade, bevor du dich zukünftig mit noch größeren daraus resultierenden Problemen rumschlagen musst.
Zitat:
das ist ein vereinfachtes beispiel und gewicht ist eins von sehr vielen spalten die sich eigentlich fast alle unterscheiden.
Dann normalisiere jetzt vernünftig, und lagere die Eigenschaften in eine eigene Tabelle aus.

teile_id | eigenschaft_id | wert
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #11 (permalink)  
Alt 06-11-2006, 22:00
IVAN
 Newbie
Links : Onlinestatus : IVAN ist offline
Registriert seit: May 2006
Beiträge: 12
IVAN ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Letzter Versuch.

Gibt es jemanden der auf MEINE FRAGE eine ANTWORT hat?

und bitte nicht noch mehr Kommentare zu meiner DB die noch keiner gesehen hat und sie beurteilen will...
was ich hir als Beispiele aufgeführt habe sind lediglich BEISPIELE die nur helfen sollten um mein Problem zu schildern.


So also nochmal ganz einfach.
Wie kann ich die Alias (oder sonstiges) als Variablen nutzen oder extra Variablen setzten die dafür geeignet wären,
um den Inhalt einer eines Feldes in der Abfrage zu nutzen.

PHP-Code:
$abfrage "SELECT teile.anzahl, teile.feldname AS feldname, teile.tabname AS tabname, 'tabname'.bezeichnug 
                FROM teile
                JOIN 'tabname'
                ON teile.teile_id='tabname'.'feldname'
                WHERE teile.anzahl>'0'"
;
$result mysql_query($abfrage); 
...ja diese Abfrage geht so nicht aber so in etwa habe ich es mir vorgestellt.

PS: Ich möchte doch nur eine Antwort auf meine Frage und nichts anderes, Danke.
Mit Zitat antworten
  #12 (permalink)  
Alt 07-11-2006, 10:55
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 du bereits bemerkt hast, geht das nicht so direkt. Entweder nutzt du MySQL-Variablen - weiß aber nicht ob das klappt - oder du fragst halt vorher die Werte ab und baust die Query mit PHP zusammen.

P.S.: Manchmal ist die Lösung des Problems nicht die Lösung des Problems sondern die Beseitigung der Ursache. (Das war mein letztes Wort zu deinem Schema.)
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 03:35 Uhr.