我一直在進行數據庫分配。我被困在一個查詢中:它必須顯示支付漫畫(bandes)的次數(commande_id:2), ,這意味着首先我必須將每本書的價格乘以數量(articles_commandes中的quantite),並對價格進行總結。我的例子是,一個客戶訂購了3個不同的漫畫,其中一個客戶在3個例子中。我設法編寫了總結3部漫畫所有價格的查詢,但我沒有設法將漫畫的價格乘以它的數量。SQL,顯示訂單的總價格
這裏有3分表上的IM工作:
Article_commandes | bande(comics) | commande
=========== |============= |=============
Commande_id FK | bande_id PK |commande_id PK
bande_id FK | price PK |commande_date
quantité | |client_id FK
| . |commande_valeur
. | . |
. | . |
. | |
========== |====== |======
首先是bandes(漫畫):
二是:articles_commandes(訂購產品)
這是一個查詢中,即時通訊總結3漫畫書(bande_id)說,若訂單2個有序的價格(command_id的:2)
SELECT SUM(`bande_prix`) FROM `bandes` where `bande_id` IN (select `bande_id` from `articles_commandes` where `commande_id` = 2);
結果是:
不過,我需要的結果是:59,因爲第二個漫畫奉命3次:
第一本漫畫書的價格訂購:25×1 = 25
價格第二連環畫下令:8×3 = 24(在這裏,我有一個問題!)
價格第三漫畫書的訂購:10×1 = 10
我應該如何寫查詢爲了獲得整個訂單的總價格?
我將是任何幫助,建議和意見,非常感謝!
-- phpMyAdmin SQL Dump
-- version 4.1.14
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: 30 Paź 2015, 19:38
-- Server version: 5.6.17
-- PHP Version: 5.5.12
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `bd`
--
-- --------------------------------------------------------
--
-- Struktura tabeli dla tabeli `articles_commandes`
--
CREATE TABLE IF NOT EXISTS `articles_commandes` (
`commande_id` int(6) NOT NULL,
`bande_id` int(6) NOT NULL,
`quantite` int(3) NOT NULL,
KEY `commande_id` (`commande_id`,`bande_id`),
KEY `bande_id` (`bande_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Zrzut danych tabeli `articles_commandes`
--
INSERT INTO `articles_commandes` (`commande_id`, `bande_id`, `quantite`) VALUES
(1, 1, 1),
(1, 2, 1),
(2, 1, 1),
(2, 3, 3),
(2, 4, 1);
-- --------------------------------------------------------
--
-- Struktura tabeli dla tabeli `auteur`
--
CREATE TABLE IF NOT EXISTS `auteur` (
`auteur_id` int(6) NOT NULL AUTO_INCREMENT,
`auteur_nom` varchar(30) NOT NULL,
`auteur_prenom` varchar(30) NOT NULL,
`auteur_dt_naissance` date NOT NULL,
PRIMARY KEY (`auteur_id`),
KEY `auteur_id` (`auteur_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
--
-- Zrzut danych tabeli `auteur`
--
INSERT INTO `auteur` (`auteur_id`, `auteur_nom`, `auteur_prenom`, `auteur_dt_naissance`) VALUES
(1, 'Ikeda', 'Riyoko', '1947-12-18'),
(2, 'Nakazawa', 'Keiji', '1939-03-14'),
(3, 'Oba', 'Tsugami', '1960-12-01'),
(4, 'Goscinny', 'Rene', '1940-05-13'),
(5, 'Uderzo', 'Albert', '1941-12-03');
-- --------------------------------------------------------
--
-- Struktura tabeli dla tabeli `bandes`
--
CREATE TABLE IF NOT EXISTS `bandes` (
`bande_id` int(6) NOT NULL AUTO_INCREMENT,
`isbn` varchar(20) NOT NULL,
`date_pub` date NOT NULL,
`bande_titre` varchar(30) NOT NULL,
`bande_prix` float NOT NULL,
PRIMARY KEY (`bande_id`),
KEY `bande_id` (`bande_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
--
-- Zrzut danych tabeli `bandes`
--
INSERT INTO `bandes` (`bande_id`, `isbn`, `date_pub`, `bande_titre`, `bande_prix`) VALUES
(1, '250500949X', '2011-01-06', 'Rose de Versailles', 25),
(2, '2849990736', '2009-01-01', 'Gen d''Hiroshima', 35),
(3, '2505000328', '2007-01-18', 'Death Note', 8),
(4, '201210133X', '2004-06-16', 'Astérix Le Gaulois', 10);
-- --------------------------------------------------------
--
-- Struktura tabeli dla tabeli `bande_auteur`
--
CREATE TABLE IF NOT EXISTS `bande_auteur` (
`bande_id` int(6) NOT NULL,
`auteur_id` int(6) NOT NULL,
KEY `bande_id` (`bande_id`),
KEY `auteur_id` (`auteur_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Zrzut danych tabeli `bande_auteur`
--
INSERT INTO `bande_auteur` (`bande_id`, `auteur_id`) VALUES
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(4, 5);
-- --------------------------------------------------------
--
-- Struktura tabeli dla tabeli `client`
--
CREATE TABLE IF NOT EXISTS `client` (
`client_id` int(6) NOT NULL AUTO_INCREMENT,
`client_nom` varchar(30) NOT NULL,
`client_prenom` varchar(30) NOT NULL,
`client_adresse` varchar(100) NOT NULL,
`client_tel` varchar(10) NOT NULL,
`client_email` varchar(30) NOT NULL,
PRIMARY KEY (`client_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
--
-- Zrzut danych tabeli `client`
--
INSERT INTO `client` (`client_id`, `client_nom`, `client_prenom`, `client_adresse`, `client_tel`, `client_email`) VALUES
(1, 'Dubois', 'Jean', '15, Avenue des Fleurs', '0482369777', '[email protected]'),
(2, 'Leroy', 'Claire', '20, Bld Gambetta', '0623145879', '[email protected]');
-- --------------------------------------------------------
--
-- Struktura tabeli dla tabeli `commande`
--
CREATE TABLE IF NOT EXISTS `commande` (
`commande_id` int(6) NOT NULL AUTO_INCREMENT,
`commande_date` date NOT NULL,
`client_id` int(6) NOT NULL,
`commande_valeur` float NOT NULL,
PRIMARY KEY (`commande_id`),
KEY `commande_id` (`commande_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;
--
-- Zrzut danych tabeli `commande`
--
INSERT INTO `commande` (`commande_id`, `commande_date`, `client_id`, `commande_valeur`) VALUES
(1, '2015-10-30', 1, 0),
(2, '2015-10-29', 2, 0);
--
-- Ograniczenia dla zrzutów tabel
--
--
-- Ograniczenia dla tabeli `articles_commandes`
--
ALTER TABLE `articles_commandes`
ADD CONSTRAINT `articles_commandes_ibfk_2` FOREIGN KEY (`bande_id`) REFERENCES `bandes` (`bande_id`),
ADD CONSTRAINT `articles_commandes_ibfk_1` FOREIGN KEY (`commande_id`) REFERENCES `commande` (`commande_id`);
--
-- Ograniczenia dla tabeli `bande_auteur`
--
ALTER TABLE `bande_auteur`
ADD CONSTRAINT `bande_auteur_ibfk_2` FOREIGN KEY (`auteur_id`) REFERENCES `auteur` (`auteur_id`),
ADD CONSTRAINT `bande_auteur_ibfk_1` FOREIGN KEY (`bande_id`) REFERENCES `bandes` (`bande_id`);
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;
/*!40101 SET [email protected]_COLLATION_CONNECTION */;
你是老闆!!!!非常感謝!!! – mike
我也是。如果你想要所有的指揮官然後改變:WHERE aa.commande_id = 2這個:GROUP BY aa.commande_id –