ich habe eine Frage:
ich habe im Startfenster meiner Testhomepage gleich die Angebote stehen
und mit einem Klick bekomme ich die detaillierten Angaben. Die Abfrage nach den detaillierten hat aber den Nachteil, das sie Sonderangebotspreise nicht berücksichtigt und immer noch die Originalpreise (die will ich behalten, falls man das Sonderangebot temporär beschränkt)..
Wie schaffe ich das, das die Suche auch gleich prüft ob das Buch im Angebot ist?
Für Verbesserungsvorschläge bin ich immer zu haben..
Danke
Thomas
Select's:
Angebote abfragen:
Detaillierte Daten von einem Buch abrufen
$id ist die übergebene Isbn13-Nummer
meine Tabellen:
#Buch#
CREATE TABLE book(
title VARCHAR(64) NOT NULL DEFAULT '',
content LONGTEXT,
cover ENUM('Hardcover','Softcover'),
publisher INT,
language INT UNSIGNED,
isbn10 VARCHAR(10),
isbn13 VARCHAR(13) NOT NULL PRIMARY KEY,
price DECIMAL(7,2),
publication DATE,
pages INT UNSIGNED,
imagepath VARCHAR(128)
) ENGINE=INNODB;
#Autor#
CREATE TABLE author(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
given_name VARCHAR(30) NOT NULL DEFAULT '',
surname VARCHAR(30) NOT NULL DEFAULT ''
) ENGINE=INNODB;
#Angebote#
CREATE TABLE offer(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
book_id VARCHAR(13) NOT NULL,
INDEX(book_id),
FOREIGN KEY(book_id) REFERENCES book(isbn13),
price DECIMAL(10,2)
) ENGINE=INNODB;
#author mit books verknüpfen#
CREATE TABLE author_book(
author_id INT UNSIGNED NOT NULL,
book_id VARCHAR(13) NOT NULL,
INDEX(author_id),
FOREIGN KEY(author_id) REFERENCES author(id),
INDEX(book_id),
FOREIGN KEY(book_id) REFERENCES book(isbn13)
)ENGINE=INNODB;
#Verlag#
CREATE TABLE publisher(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL DEFAULT ''
) ENGINE=INNODB;
#Sprache#
CREATE TABLE language(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
language VARCHAR(30) NOT NULL DEFAULT 'Deutsch'
) ENGINE=INNODB;
#Lager#
CREATE TABLE stock(
book_id VARCHAR(13),
INDEX(book_id),
FOREIGN KEY(book_id) REFERENCES book(isbn13),
stock INT UNSIGNED
) ENGINE=INNODB;
ich habe im Startfenster meiner Testhomepage gleich die Angebote stehen
und mit einem Klick bekomme ich die detaillierten Angaben. Die Abfrage nach den detaillierten hat aber den Nachteil, das sie Sonderangebotspreise nicht berücksichtigt und immer noch die Originalpreise (die will ich behalten, falls man das Sonderangebot temporär beschränkt)..
Wie schaffe ich das, das die Suche auch gleich prüft ob das Buch im Angebot ist?
Für Verbesserungsvorschläge bin ich immer zu haben..
Danke
Thomas
Select's:
Angebote abfragen:
Code:
SELECT b.title AS Titel,b.isbn13 AS isbn13, a.surname AS Vorname, a.given_name AS Nachname, b.price AS "alt",b.imagepath AS path, o.price AS "neu" FROM offer AS o, book AS b JOIN author_book AS ab ON b.isbn13=ab.book_id JOIN author AS a ON ab.author_id=a.id WHERE o.book_id=b.isbn13;
Code:
SELECT b.title, b.content, b.cover, b.isbn10, b.isbn13, b.price, b.publication, b.imagepath, b.pages, a.surname, a.given_name, p.name, l.language, s.stock FROM publisher AS p, stock AS s,language AS l, book AS b JOIN author_book AS ab ON b.isbn13=ab.book_id JOIN author AS a ON ab.author_id=a.id WHERE p.id=b.publisher AND b.isbn13='.$id.' AND l.id= b.language AND s.book_id=b.isbn13;
meine Tabellen:
#Buch#
CREATE TABLE book(
title VARCHAR(64) NOT NULL DEFAULT '',
content LONGTEXT,
cover ENUM('Hardcover','Softcover'),
publisher INT,
language INT UNSIGNED,
isbn10 VARCHAR(10),
isbn13 VARCHAR(13) NOT NULL PRIMARY KEY,
price DECIMAL(7,2),
publication DATE,
pages INT UNSIGNED,
imagepath VARCHAR(128)
) ENGINE=INNODB;
#Autor#
CREATE TABLE author(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
given_name VARCHAR(30) NOT NULL DEFAULT '',
surname VARCHAR(30) NOT NULL DEFAULT ''
) ENGINE=INNODB;
#Angebote#
CREATE TABLE offer(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
book_id VARCHAR(13) NOT NULL,
INDEX(book_id),
FOREIGN KEY(book_id) REFERENCES book(isbn13),
price DECIMAL(10,2)
) ENGINE=INNODB;
#author mit books verknüpfen#
CREATE TABLE author_book(
author_id INT UNSIGNED NOT NULL,
book_id VARCHAR(13) NOT NULL,
INDEX(author_id),
FOREIGN KEY(author_id) REFERENCES author(id),
INDEX(book_id),
FOREIGN KEY(book_id) REFERENCES book(isbn13)
)ENGINE=INNODB;
#Verlag#
CREATE TABLE publisher(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL DEFAULT ''
) ENGINE=INNODB;
#Sprache#
CREATE TABLE language(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
language VARCHAR(30) NOT NULL DEFAULT 'Deutsch'
) ENGINE=INNODB;
#Lager#
CREATE TABLE stock(
book_id VARCHAR(13),
INDEX(book_id),
FOREIGN KEY(book_id) REFERENCES book(isbn13),
stock INT UNSIGNED
) ENGINE=INNODB;
Comment