重複レコードがある場合を除いて機能する次のクエリを実行しています(id(主キー、int)フィールドと変更された(タイムスタンプ)列を除いて重複し、重複する列が多数あります。重複は人の結果ですフォームで送信ボタンを複数回押す (それも修正する必要がありますが、それは別の問題です). クエリは次のとおりです。
$sql = "SELECT COUNT(id) AS rcount,
SUM(num_guests) AS gcount,
DATE_FORMAT(modifed, '%%m-%%Y') AS adate,
SUM(1st_visit REGEXP '^no') AS repeat_guest
FROM reservation_stats
WHERE establishmentid = %i
AND num_guests > 0
GROUP BY adate
ORDER BY added";
SUM に重複を含めたくありません。私はmysqlとphpを使用しています。
ありがとう
PSテーブル構造:
id int(10)
establishmentid int(11)
name varchar(50)
email varchar(100)
phone varchar(30)
num_guests int(11)
reservation_time varchar(50)
reservation_date date
1st_visit varchar(10)
data text
added date
modifed timestamp
PPS: 私の質問は、Tom の提案の後にあります:
$sql = "SELECT COUNT(*) as rcount, SUM(num_guests) AS gcount,
DATE_FORMAT(added, '%%m-%%Y') AS adate,
1 as repeat_guest
FROM
( SELECT added, name, email, phone, num_guests,
reservation_time, reservation_date
FROM reservation_stats where establishmentid = %i
GROUP BY added, name, email, phone, num_guests,
reservation_time, reservation_date
\) dup
group by adate
order by added";
ありがとうトム。元のクエリから repeat_guest データが失われることを除いて、これは機能します。どうすれば保存できますか?
PPPS: ちょっと待って、これはどう?
$sql = "SELECT COUNT(*) as rcount, SUM(num_guests) AS gcount, DATE_FORMAT(added, '%%m-%%Y') AS adate, SUM(repeat_guest)
FROM
(
SELECT added, name, email, phone, num_guests, reservation_time, reservation_date, SUM(1st_visit REGEXP '^no') AS repeat_guest
FROM reservation_stats
where establishmentid = %i
GROUP BY added, name, email, phone, num_guests, reservation_time, reservation_date
) dup
group by adate order by added";
動作しているように見えますが、それは私が思っていることをやっていますか?