0

我正在使用 sql developer 和 oracle 11g 为酒店系统创建数据库,我需要打印名字、姓氏、电子邮件以及每个人(电子邮件)访问酒店的次数。因此,我需要计算预订表中出现了多少次电子邮件。

我有 2 张桌子要加入:

  • 顾客:

first_name last_name phone address town email postcode

  • 预订:

Date_ room occupants arrival_time nights paid email_

我想显示first_name, last_name, email, COUNT(email)

我怎样才能做到这一点?

4

2 回答 2

0
SELECT   first_name, last_name, customer.email, visits
FROM     customer
JOIN     (SELECT   email_, COUNT(*) AS visits
          FROM     bookings
          GROUP BY email_) v
ON       customer.email = v.email_
于 2013-11-06T11:35:19.083 回答
0

这将是一对多的关系:

SELECT  c.first_name, c.last_name, c.email, COUNT(c.email)
FROM    customer  c
JOIN    booking  b
ON      c.email = b.email_
GROUP   BY
        c.first_name, c.last_name, c.email
;

与以下相同:

SELECT  x.col, count(x.col)
FROM
(
        SELECT 1 col FROM DUAL UNION ALL
        SELECT 2     FROM DUAL
) x
JOIN
(
        SELECT 1 col FROM DUAL UNION ALL
        SELECT 1     FROM DUAL UNION ALL
        SELECT 2     FROM DUAL UNION ALL
        SELECT 2     FROM DUAL UNION ALL
        SELECT 2     FROM DUAL UNION ALL
        SELECT 3     FROM DUAL
)  y
ON      x.col = y.col
GROUP   BY
        x.col
;
/*
1   2
2   3
*/
于 2013-11-06T12:55:01.947 回答