PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Zwei Werte aus erster Tabelle mit ein Wert aus zweiter Tabelle (LEFT JOIN) verknüpfen (http://www.selfphp.de/forum/showthread.php?t=24482)

horn-consulting 17.11.2011 14:14:05

Zwei Werte aus erster Tabelle mit ein Wert aus zweiter Tabelle (LEFT JOIN) verknüpfen
 
Hallo,

Ich habe in MySQL 2 Tabellen welche ich mit LEFT JOIN in PHP verknüpft habe.

1. Tabelle (artikelstamm):
=======

FEArt (Fertigartikel) | arbeitsvorgang | artikel (einfliesender Artikel)
-----------------------|-------------------|------------------------------------
______282_______|______1_______|_________460______________
______282_______|______3_______|_________461______________
______282_______|______4_______|_________462______________
______282_______|______4_______|_________463______________
______282_______|______5_______|_________466______________

2. Tabelle (artikelhistory):
=======

ID_AS (Primärschlüssel) | intern | kategorie | bezeichnung
-----------------------------|--------|-------------|-------------------------------
______282____________|_120_|___FE_____|__Eiscreme Vanille_______
______460____________|_224_|___LE_____|__Milch 3,5 %___________
______461____________|_227_|___SS_____|__Zucker, vanillegeschmack
______462____________|_231_|___LE_____|__Sahne wenig Fett_______
______463____________|_332_|___FS_____|__Farbstoff______________
______466____________|_344_|___ZT_____|__Vanille pur____________

Jetzt soll über LEFT JOIN die Tabelle 1 mit Tabelle 2 miteinander so verknüpft werden das ich ID_AS mit FEArt UND Artikel verknüft sind.

Die Ausgabetabelle soll so aussehen, dass statt der ID_AS die "intern" Nummer ausgegeben wird:
============

FE Artikel | Arbeitsvorgang | Artikel
-------------|-------------------|-----------------
__120____|_______1______|_____224____
__120____|_______3______|_____227____
__120____|_______4______|_____231____
__120____|_______4______|_____232____
__120____|_______5______|_____234____

Wenn ich 'artikelstamm'.'intern' anspreche bekomme ich nur einen Wert, nämlich "120". Ich brauche aber intern aus der 2. Verknüpfung. Ich weis nur nicht wie. Ich habe bis jetzt so experimentiert:

PHP-Code:

SELECT FROM artikelhistory LEFT JOIN artikelstamm ON ((artikelhistory.FEArt artikelstamm.ID_AS) OR (artikelhistory.artikel artikelstamm.ID_AS)) 

aber auch mit AND, wobei da gar keine Werte ausgegeben wurden. Bisher schaffe ich es nur die ID anzuzeigen, das nützt aber nichts da die nur für die Verknüpfung wichtig aber ohne Aussagekraft über den Artikel ist.

Nur mit

PHP-Code:

SELECT FROM artikelhistory LEFT JOIN artikelstamm ON artikelhistory.FEArt artikelstamm.ID_AS 

bekomme ich auch nicht das gewünschte ergebnis.

Abgerufen wird mit

PHP-Code:

<table><tr><td align="left\">".$array['FEArt']."_".$array['intern']."</td><td align=\"left\">".$array['arbeitsvorgang']."</td><td align=\"left\">".$array['artikel']."_".$array['intern']."</td> 

Ich weis nicht wie ich eine Variable deklarieren kann welche in einem Abruf (While Schleife) zwei Werte mit einer Bezugsquelle umcodiert ...

Hat jemand eine Idee oder gar eine Lösung?

Ckaos 17.11.2011 19:23:17

AW: Zwei Werte aus erster Tabelle mit ein Wert aus zweiter Tabelle (LEFT JOIN) verknü
 
Hi

deine Select's versteh ich nicht oder ich versteh nicht was du willst ;)
Zitat:

zwei Werte mit einer Bezugsquelle umcodiert
O.o?

Wenn ich dein "soll so aussehen" sehe würde ich wie folgt verknüpfen.

Code:

SELECT a.intern,b.arbeitsvorgang,c.intern
FROM artikelhistory as a
LEFT JOIN artikelstamm as b
ON a.ID_AS = b.FEart
LEFT JOIN artikelhistory as c
ON b.artikel = c.ID_AS

Achtung indexieren und laufzeiten beachten!

mfg

CKaos

horn-consulting 18.11.2011 13:32:40

AW: Zwei Werte aus erster Tabelle mit ein Wert aus zweiter Tabelle (LEFT JOIN) verknü
 
Super :-) Das war genau die richtige Anregung ...

Hab es nun so gelößt

PHP-Code:

SELECT *, intern_1.intern AS wert1 intern_2.intern AS wert2 FROM (artikelhistory LEFT JOIN artikelstamm AS intern_1 ON artikelhistory.FEArt intern_1.ID_ASLEFT JOIN artikelstamm AS intern_2 ON artikelhistory.artikel intern_2.ID_AS 

und ich bekomme nun genau die Werte welche ich wollte.

Einen ganz großen Dank.


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

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.