私のデータベースなしで2つのクエリに参加するには、両者がそれぞれの時間の価格 "の列のSUMを収集しようとしているいくつかの異なる値が、イムを持ってMySQLは試合
Wardrobe_CloakTable & Wardrobe_ServiceTable
と呼ばれる2つの異なるテーブルで存在します。
このクエリは私にちょうどWardrobe_CloakTable
SELECT DATE(delivered) as date, sum(price) as sum, HOUR(delivered) AS hour
FROM Wardrobe_CloakTable
WHERE payingcustomerID = '$payingcustomerID'
AND delivered >= CONCAT(CURDATE() , ' 07:00:00')
AND delivered < CONCAT(CURDATE() , ' 07:00:00') + INTERVAL 1 DAY
GROUP BY DATE(delivered), HOUR(delivered)
これに対して正しい結果を与えるには、私がやりたいものを実際にデータが存在するので、唯一の時間は、ある
---------------------------------
| date | sum | hour |
| 2016-09-15 | 100 | 9 |
| 2016-09-15 | 200 | 10 |
| 2016-09-15 | 100 | 12 |
| 2016-09-15 | 100 | 18 |
---------------------------------
のようなものを提供します
-----------------------------------------------------------------
| date | sum(CloakTable) | sum(ServiceTable) | hour |
| 2016-09-15 | 100 | 200 | 9 |
| 2016-09-15 | 200 | 500 | 10 |
| 2016-09-15 | | 400 | 11 |
| 2016-09-15 | 200 | | 14 |
| 2016-09-15 | 100 | 400 | 15 |
| 2016-09-15 | 100 | 200 | 18 |
------------------------------------------------------------------
これまでのところ、私はUNIONを使用して作成しようとしていますとFULL JOINですが、私が気づいたように、完全な結合はMySQLでは不可能です。あなたが左をしない限り、右。
iは便利なものになってきた最も近い:
SELECT DATE(delivered) as date,
sum(price) as sum,
HOUR(delivered) as hour
FROM Wardrobe_CloakTable
WHERE payingcustomerID = 2
AND Wardrobe_CloakTable.delivered >= CONCAT(CURDATE() , ' 07:00:00')
AND Wardrobe_CloakTable.delivered < CONCAT(CURDATE() , ' 07:00:00') + INTERVAL 1 DAY
GROUP BY DATE(delivered), HOUR(delivered)
UNION ALL
SELECT DATE(time) as date,
sum(price) as sum,
HOUR(time) as hour
FROM Wardrobe_ServiceTable
WHERE payingcustomerID = 2
AND Wardrobe_ServiceTable.time >= CONCAT(CURDATE() , ' 07:00:00')
AND Wardrobe_ServiceTable.time < CONCAT(CURDATE() , ' 07:00:00') + INTERVAL 1 DAY
GROUP BY DATE(time), HOUR(time)
これは私に与える:
---------------------------------
| date | sum | hour |
| 2016-09-15 | 100 | 9 | (Cloaktable)
| 2016-09-15 | 200 | 10 | (Cloaktable)
| 2016-09-15 | 100 | 9 | (service)
| 2016-09-15 | 100 | 11 | (service)
---------------------------------
スキーマ
CREATE TABLE `Wardrobe_CloakTable` (
`ID` int(64) NOT NULL,
`payingcustomerID` int(11) NOT NULL,
`deviceID` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`terminalnumber` int(11) NOT NULL,
`qrcode` varchar(64) CHARACTER SET latin1 COLLATE latin1_danish_ci NOT NULL,
`cloakroomsection` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,
`cloakroomnumber` int(11) NOT NULL,
`isbag` tinyint(1) NOT NULL,
`price` int(11) NOT NULL,
`delivered` datetime NOT NULL,
`collected` datetime DEFAULT NULL,
`reservedtime` datetime DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `Wardrobe_ServiceTable` (
`ID` int(11) NOT NULL,
`payingcustomerID` int(11) NOT NULL,
`qrcode` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
`time` datetime NOT NULL,
`price` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
私はあなたが/ Wardrobe_CloakTable.date = Wardrobe_ServiceTable.date ON '条件によってそれらを結合したいことができると思うとWardrobe_CloakTable.hour = Wardrobe_ServiceTable.hour'。 –
データテーブルのスキーマを追加できますか? –
もし私がphpmyadminで簡単にそれを得る方法を知っていたら?そこに助けてもらえますか? –