phpbar.de logo

Mailinglisten-Archive

[php] Crosspromotion in shops?

[php] Crosspromotion in shops?

=?iso-8859-1?Q?Bj=F6rn_Schotte?= bjoern_(at)_baer.main.de
Sun, 30 Apr 2000 17:07:28 +0200


* Wilfried Henseler wrote:
> Also (siehe amazon):
> "Wer dieses Buch gekauft hat, hat auch .... gekauft"

Mal schnell auf den Schmierzettel gepinselt. Könnte sein, dass
es fehlerhaft ist, mal sehen:

Tabelle produkt enthält eine Produkt-ID plus restliche Produktdaten.
Tabelle kunde enthält Kunden-ID plus restliche Kundendaten.
Tabelle bestellung enthält Kunden-ID plus Produkt-ID plus restliche
Bestelldaten (evtl. noch weiter zu normalisieren)

In einer Zeile:

select b2.pid from bestellung as b1, bestellung as b2 where b1.pid="1"
and b2.kid=b1.kid and b2.pid not like '1' group by b2.pid;

Übersetzt: selektiere mir die Produkt-ID2 (b2.pid) aus zwei Bestelltabellen
(b1, b2), bei der b1.pid die Produkt-ID ist auf die die Crossover-Bestellungen
geprüft werden sollen, sowie der Kunde von b2 und b1 der gleiche ist und
die Produkt-ID aus p2 nicht gleich b1.pid ist. Gruppiere das Result dann gegen
b2.pid, um jede pid einzeln zu erhalten.

Falls jemand eine bessere Lösung oder Anmerkungen zu meiner Lösung
hat, nur her damit. :)

# MySQL dump 6.0
#
# Host: localhost    Database: test
#--------------------------------------------------------
# Server version	3.22.25

#
# Table structure for table 'bestellung'
#
CREATE TABLE bestellung (
  kid bigint(20) DEFAULT '0' NOT NULL,
  pid bigint(20) DEFAULT '0' NOT NULL,
  kontonummer bigint(20) DEFAULT '0' NOT NULL,
  PRIMARY KEY (kid,pid)
);

#
# Dumping data for table 'bestellung'
#

INSERT INTO bestellung VALUES (1,1,123456);
INSERT INTO bestellung VALUES (1,3,123456);
INSERT INTO bestellung VALUES (1,5,123456);
INSERT INTO bestellung VALUES (2,5,7890);
INSERT INTO bestellung VALUES (2,1,7890);
INSERT INTO bestellung VALUES (3,1,456);
INSERT INTO bestellung VALUES (3,2,456);
INSERT INTO bestellung VALUES (3,3,456);

#
# Table structure for table 'kunde'
#
CREATE TABLE kunde (
  kid bigint(20) DEFAULT '0' NOT NULL auto_increment,
  kname varchar(255),
  PRIMARY KEY (kid)
);

#
# Dumping data for table 'kunde'
#

INSERT INTO kunde VALUES (1,'Björn Schotte');
INSERT INTO kunde VALUES (2,'Testuser XYZ');
INSERT INTO kunde VALUES (3,'Michael Mustermann');

#
# Table structure for table 'produkt'
#
CREATE TABLE produkt (
  pid bigint(20) DEFAULT '0' NOT NULL auto_increment,
  pname varchar(255),
  PRIMARY KEY (pid)
);

#
# Dumping data for table 'produkt'
#

INSERT INTO produkt VALUES (1,'SQL für Dummies');
INSERT INTO produkt VALUES (2,'Apache Webserver betreiben');
INSERT INTO produkt VALUES (3,'Designing Web Usability');
INSERT INTO produkt VALUES (4,'XML in der Praxis');
INSERT INTO produkt VALUES (5,'HTML4');
-- 
  **  Ostermotive ** Comics ** Hochwertige Akte ** Liebesgrüße **
   ** Städtebilder       und mehr bei       Landschaftsmotive **

          =======> <http://www.web-cards.de/> <=======



php::bar PHP Wiki   -   Listenarchive