Mysql/PHP Abfrage 2 Tabellen

Spontan

Erfahrenes Mitglied
Schönen guten Morgen,

ich habe folgendes Problem: Ich programmiere gerade eine Editierung für die Bestellungen in einem Onlineshop. Ist auch alles fertig und gut, aber 1 Feature wollte ich noch einbauen: Die Anzeige des Preises, welchen der Kunde bei letzten mal gezahlt hat, fall er dieses Produkt schon mal bestellt hat....
$oID = Aktuelle Bestellnummer
$cust_id = Kundennummer
$pod_id = Produktnummer
es soll also erst feststellen welche Bestellungen der Kunde schon getätigt hat, und dann aus der 2. Tabelle den final_price für das Produkt mit der entsprechenden Produktnummer.

Die Frage: so klappt es nicht. giibt es die Möglichkeit dieses mit nur einem query zu lösen(LEFT JOIN)? Denn im Moment funktioniert es gar nicht!


PHP:
function get_last_price($oID,$cust_id,$pod_id) {
  global $last_price;
  
  $sql_get_orders = tep_db_query("select orders_id from  " . TABLE_ORDERS . " where customers_id='$cust_id' AND orders_id!='$oID'");
  while($array_id = mysql_fetch_array($sql_get_orders)) {
    $sql = "select final_price from " . TABLE_ORDERS_PRODUCTS . " where (orders_id='".$array_id['orders_id']."' AND products_id='$pod_id')";
    $query_price = tep_db_query($sql);
    if(mysql_num_rows($query_price) == 1) {
      $last_price = mysql_fetch_array($query_price);  
      $last_price = $last_price[0];
      return $last_price;
    }
  }
}


Danke
 
tep_db_query("select orders_id from " . TABLE_ORDERS . " where customers_id='$cust_id' AND orders_id!='$oID'");

was ist tep_db_query ?
was ist TABLE_ORDERS ? Ist das eine Variable oder Function oder..?

PHP:
mysql_query("SELECT orders_id FROM table_orders WHERE customers_id='$cust_id' AND NOT orders_id='$oID'");
 
der Shop bassiert auf OScommerce

tep_db_query ~ mysql_query
" . TABLE_ORDERS . " = tabellename orders
" . TABLE_ORDERS_PRODUCTS . " = tabellename orders_products
 
ahso na von OScommerce hab ich keine ahnung. weis net wie das aufgebaut ist.

ansonsten Left Join funktioniert so:

mysql_query=("SELECT u.name, p.produkt FROM users u LEFT JOIN tbl_prod p ON u.usr_id=p.usr_id WHERE u.usr_id='$id'");

D.h. FROM haupttabelle LEFT JOIN tabelle2 ON bedingung WHERE ...

oder FROM haupttabelle LEFT JOIN tabelle2 USING feld WHERE ...

Bei USING müssen die Feld-Namen beider Tabellen gleich sein. Daher verwende ich am besten immer die obere, um Fehler zu vermeiden.
 
Zuletzt bearbeitet:
Also im Grunde sind es 2 Querys, wobei der erste mehere Werte liefer kann, das ist das Problem.

Tabelle orders:
PHP:
select orders_id from orders where customers_id='$cust_id' AND orders_id!='$oID';
...das klappt ja auch.... jetzt muss mit diesen Werten:

Tabelle orders_products
PHP:
select final_price from orders_products where orders_id='WERTEVONOBEN' AND products_id='$prod_id';

und irgendwie komm ich da nicht auf einen Nenner, denn oben (query1) kann verschiedene Bestellungen(orders_id) aussuchen. Die muss er alle abgrasen und schauen ob das Produkt in der entsprechenden Bestellung schon gekauft wurde.(query2)
 
Zurück