0

常連客の記録一覧を取得したい。通常の顧客レコードを取得するための mysql クエリを手伝ってくれる人はいますか。

定期顧客レコードの定義: 定期顧客に電話をかけた過去 3 か月間、月に 1 回注文した顧客。

例: 顧客 6 月、7 月、8 月に 1 回注文すると、通常と呼ばれますが、5 月、7 月、8 月に注文した場合、それは通常の顧客ではありません。

私のテーブルリストに従ってください:

CREATE TABLE IF NOT EXISTS `customer_mst` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `firstName` varchar(50) NOT NULL,
  `lastName` varchar(50) NOT NULL,
  `email` varchar(150) NOT NULL,
  `phone` varchar(20) NOT NULL,
  `dateCreated` datetime NOT NULL,
  `lastActivity` datetime NOT NULL,
  `ipAddress` varchar(40) NOT NULL,
  PRIMARY KEY (`ID`)
)

CREATE TABLE IF NOT EXISTS `order_mst` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `custId` int(11) NOT NULL COMMENT 'FK customer_mst(ID)',
  `grandTotal` float NOT NULL,
  `createdDate` datetime NOT NULL,
  PRIMARY KEY (`ID`),
  KEY `custId` (`custId`)
) 
4

3 に答える 3

1

これは最も簡単な方法ですが、最速ではありません。

select * from customer_mst
where ID in (
    select custId from order_mst
    where createdDate <= (NOW() - INTERVAL 2 MONTH) and createdDate > (NOW() - INTERVAL 3 MONTH)
)
and ID in (
    select custId from order_mst
    where createdDate <= (NOW() - INTERVAL 1 MONTH) and createdDate > (NOW() - INTERVAL 2 MONTH)
)
and ID in (
    select custId from order_mst
    where createdDate <= NOW() and createdDate > (NOW() - INTERVAL 1 MONTH)
)

ヒント:コメントの代わりにInnoDB エンジンと外部キー制約を使用してみてください。

于 2013-10-31T08:13:33.533 に答える
0

効率的ではありませんが

$month1=mysqli_query(select * from customer_mst
where ID in (
    select custId from order_mst
    where createdDate <= (NOW() - INTERVAL 2 MONTH) and createdDate > (NOW() - INTERVAL 3 MONTH)
));
$rows=mysqli_num_rows($month1);
if($rows>0){
$month2=mysqli_query(select * from customer_mst
where ID in (
    select custId from order_mst
    where createdDate <= (NOW() - INTERVAL 1 MONTH) and createdDate > (NOW() - INTERVAL 2 MONTH)
));
$rows1=mysqli_num_rows($month2);
if($rows1>0){
$month3=mysqli_query(select * from customer_mst
where ID in (
    select custId from order_mst
    where createdDate <= NOW() and createdDate > (NOW() - INTERVAL 1 MONTH)
));
$rows2=mysqli_num_rows($month3);
if($month3>0){
echo 'regular customer';}
};
};
于 2013-10-31T09:17:16.900 に答える