Abfrage verknüpfter Tabellen und ausgabe der datensätze

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

Abfrage verknüpfter Tabellen und ausgabe der datensätze

Postby Obiwarn28 » 16. January 2007 13:05

Hi@alle
Bin grade dabei was zusammenzubasteln
Möchte für mich eine Einahmenseite bauen ,es klappt auch schon soweit,nur jetzt habe ich das Problem ,das er wenn ein Kunde mehrere Artikel gekauf hat das er ,mir alle spalten doppelt ausgeben tut
Zuzeit sieht es so aus
Code: Select all
Datum:   |   RechNr      |   Kundename      |   Anzahl      Artikelbezeichnung   |      Einzelpreis      |   Gesammtpreis   |      Versand      |   Betrag      |   Beleg.Nr:
01.01.2007   |01012007   |   test     |   1     |   south park squeezies Figur "kenny"     |   2.9900  |   2.9900     |   5.90|       5.90 |    10.89|   1
01.01.2007   |01012007   |   test     |   2     |   Geschenk Anhänger Blau/Gold     |   1.0000  |   1.0000      |   5.90    |   10.89 |       1


so möchte ich es gerne haben :

Code: Select all
Datum:   |   RechNr      |   Kundename      |   Anzahl      Artikelbezeichnung   |      Einzelpreis      |   Gesammtpreis   |      Versand      |   Betrag      |   Beleg.Nr:
01.01.2007   |01012007   |   test     |   1     |   south park squeezies Figur "kenny"     |   2.9900  |   2.9900     |          
                                                               2     |   Geschenk Anhänger Blau/Gold     |   1.0000  |   1.0000      |   5.90    |   10.89 |       1

Also er soll nur einmal das Datum,Rechnr,Kundenamen in der ersten Reihe ausgeben Versand ,gesammt,belegnr soll er bei den letzen Bestellung der Id ausgeben,also jetzt bei zwei bestellung in der zweiten reihe
Schicke auch mal die Tabellen und den Code
MQSL Tabellen

Ich glaube mit sql ist sowas nicht alleine möglich, oder ?
Code: Select all
CREATE TABLE `orders_history_total` (
  `id` int(11) NOT NULL auto_increment,
  `customers_name` varchar(64) collate latin1_general_ci NOT NULL,
  `Bestell_id` int(11) NOT NULL,
  `orders_invoice_datum` date NOT NULL,
  `orders_invoice_date` varchar(255) collate latin1_general_ci NOT NULL,
  `total` decimal(15,4) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=5 ;

CREATE TABLE `orders_history_total_products` (
  `orders_products_id` int(11) NOT NULL auto_increment,
  `orders_id` int(11) NOT NULL default '0',
  `products_name` varchar(64) collate latin1_general_ci NOT NULL default '',
  `products_price` decimal(15,4) NOT NULL default '0.0000',
  `final_price` decimal(15,4) NOT NULL default '0.0000',
  `products_quantity` int(2) NOT NULL default '0',
  PRIMARY KEY  (`orders_products_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=18 ;


Php auschnitt
Code: Select all
<?php
$query = tep_db_query("SELECT pd.customers_name,pd.Bestell_id,pd.orders_invoice_datum,pd.orders_invoice_date,pd.total, p.orders_id,p.products_name,p.products_price,p.final_price,p.products_quantity FROM orders_history_total pd
left JOIN  orders_history_total_products p
ON p.orders_id   = pd.Bestell_id");
while ($orders = tep_db_fetch_array($query))   {
   ?>
<tr>
   <td class="dataTableorder" height="20" align="center"><?php $orders['orders_invoice_datum']; ?></td>
         <td class="dataTableorder" height="20" align="center"><?php echo $orders['orders_invoice_date']; ?></td>
   <td class="dataTableorder" align="center"><?php echo $orders['customers_name']; ?></td>
         <td class="dataTableorder" align="center"><?php echo $orders['products_quantity']; ?></td>
         <td class="dataTableorder" align="center"><?php echo $orders['products_name']; ?></td>
         <td class="dataTableorder" align="center"><?php echo $orders['products_price']; ?></td>
         <td class="dataTableorder" align="center"><?php echo $orders['final_price']; ?></td>
         <td class="dataTableorder" align="center"><?php echo $orders['versandkosten']; ?></td>
   <td class="dataTableorder" align="center"><?php echo $orders['total']; ?>  Euro</a></td>
         <td class="dataTableorder" align="center"><?php echo strip_tags($orders['orders_id']); ?></td>
</tr>
<?php
}
?>


weiss jemand rat

grüß
Obiwarn
Obiwarn28
 
Posts: 2
Joined: 16. January 2007 12:59

Postby Mätes » 16. January 2007 14:44

klappt meines wissens nach so nicht.

entweder,
du durchläufst per php das RS in einer schleife,
merkst dir die letze kundennummer, wenns dieselbe ist,
zählst du den artikel zum letzten kunden, wenn nicht,
fängt ein neuer Kunde an,
oder
du fragst aus der artikel-tabelle immer per kunden ab.

gruß
m
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle

Postby Obiwarn28 » 16. January 2007 15:13

hi @Mätes
Danke für deine schnelle Antwort ,sorry bin nicht 100% fit in php in was für eine Schleife muss ich das machen ?

grüß
Obiwarn
Obiwarn28
 
Posts: 2
Joined: 16. January 2007 12:59

Postby Mätes » 17. January 2007 12:00

nun, etwa so:

$lastCustomer = false;
$query = tep_db_query("SELECT pd.customers_name, ...");
while ($orders = tep_db_fetch_array($query)) {
if ($lastCustomer == $orders['customers_name']) {
echo 'neuer kunde';
}
//ausgabe der bestellungen
echo '<table>.....';
...

$lastCustomer = $orders['customers_name'];
}

nicht sexy, aber funktioniert.
ma
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 3 guests