# Zwei Tabellen mit JOIN verbinden



## mrepox (21. Februar 2006)

Ich grüße euch und möchte auch wenns hier schon zigmal zur Sprache kam, mit einem Join Problem nerven.

- Es gibt zwei Tabellen einer Mysql DB die hier verbunden werden sollen. (artikel und order_items)

- In der Query gibt es noch eine Bedingung, und zwar die zuordnung nach einer Variable: 
  Das Feld "orderid" muss gleich der Variable "$best_nr" sein.

order_item liefert mir die Felder u.a. bestellnummer(orderid),  Artikelnummer(ain) usw.
artikel liefert mir den Artikelnamen. (mineral) wenn ich aus artikel das feld "mineral" auslesen kann, ist
           es mir möglich diesen der artikelnummer(ain) zuzuordnen.

Nun habe ich mir mal diese query zusammengebaut und erhalte den Fehler:

Call to a member function fetch_assoc() on a non-object in    



```
// beachtet bitte es handelt sich hier um eine mysqli abfrage
 $query = "SELECT A.A_ain,A.A_mineral,O.O_ain,O.O_orderid,   
                         FROM artikel AS A INNER JOIN order_items AS O
                           ON A.A_ain = O.O_ain WHERE orderid ='$best_nr'";
                
     
       $result_b = $conn->query($query);
     while($art = $result_b->fetch_assoc())
        { $showart = $art['ain'];$showqua = $art['quantity'];$showip = $art['item_price'];$showmin = $art['mineral'];
```


Keine Ahnung ob es überhaupt so zu lösen ist wie ichs mir vorgestellt habe. Irreführend finde ich auch die schlüßelung mit A.A und O.O. So wars im Net allerdings gezeigt worden.


  mrepox


----------



## mrepox (21. Februar 2006)

Da sich hier heute keiner erbarmt habe ich mal selber weiter gemacht.  


```
$query = "SELECT artikel.ain, artikel.mineral FROM artikel LEFT JOIN  order_items ON artikel.ain = order_items.ain
                          WHERE order_items.orderid = '$best_nr'";
```

Mittlerweile kann ich endlich mit dieser query aus der tabelle "artikel" die Artikelnummer(ain) und den Artikelnamen(mineral) auslesen.
Die "ain" habe ich ja auch in der Tabelle "order_items". Beide "ain" werden verglichen und so ergibt sich die neue Zeile. 
In der WHERE Unterabfrage stelle ich die Bedingung das es in der order_items Zeile passiert in der das Feld Bestellnummer(orderid) mit der im Script vorliegenden Variable($best_nr) übereinstimmt.
Daraus kann ich eine elektronisch erstellte Rechnug erzeugen, die Werte werden aus zwei Tabellen gesammelt. 

HALT STOPP! Fehlen würde jetzt noch die 

-ANZAHL(quantity)
-EINZELPREIS (item_price)  welche wiederrum in der order_items stehen.

Wie bekomme ich die beiden jetzt da auch noch ausgelesen?

EDIT: Hatte dieses eben schonmal getestet, ohne Erfolg. Jetzt hatte ichs nochmal erweitert und nun läufts!

            Würde mich allerdings interessieren ob das so wirklich korrekt ist, es handelt sich ja um empfindliche Daten
            kann man das so lassen?


```
$query = "SELECT artikel.ain, artikel.mineral, order_items.quantity, order_items.item_price  FROM artikel LEFT JOIN  order_items ON artikel.ain = order_items.ain
                          WHERE order_items.orderid = '$best_nr'";
```


----------

