MYSQL根据所选的数据库插入ID?

时间:2015-04-02 17:52:58

标签: mysql

这是我到目前为止所做的工作(正在进行的工作):

INSERT INTO customer_bi.flight_search (
SELECT
    NULL,
    count(temp.audit_id) AS `count`,
    temp.destination,
    temp.audit_subsite_id,
    temp.subsite_desc,
    DATE_FORMAT(temp.audit_date, '%Y-%m-%d') AS search_date
FROM
    (
        SELECT DISTINCT
            a.audit_id,
            fs.destination,
            a.audit_subsite_id,
            s.subsite_desc,
            a.audit_date
        FROM
            audit_flight_search fs
        INNER JOIN audit a ON a.audit_id = fs.audit_id
        INNER JOIN gns.subsite s ON a.audit_subsite_id = s.subsite_id
        WHERE
            a.audit_date >= CURRENT_DATE() - INTERVAL 1 DAY
        AND a.audit_date < CURRENT_DATE()
        AND fs.flight_type = 'ROUNDTRIP'
        and (a.audit_member_id IS NULL OR a.audit_member_id != 10172424)
    ) temp
GROUP BY
    temp.subsite_desc,
    temp.destination
ORDER BY
    temp.subsite_desc ASC,
    `count` DESC
)

在customer_bi数据库中,我有一个表,列出了所有其他带ID的数据库。例如,GNS的ID为4.我要做的是在第二个内部联接(本例中为gns.subsite)中根据数据库名称插入该ID。我已经搜索过,但却找不到答案,我也不太了解PHP,因此无法将其作为解决方案使用。有任何想法吗?

2 个答案:

答案 0 :(得分:0)

你有加入

gns.subsite s

但您要查找的ID不在您的选择列表中

a.audit_id,
fs.destination,
a.audit_subsite_id,
s.subsite_desc,
a.audit_date

缺少

s.subsite_id

答案 1 :(得分:0)

我实际上是通过在每个数据库中创建一个单元格表来保存ID并添加子查询来解决此问题。这解决了这个问题:

INSERT INTO customer_bi.flight_search (
SELECT
    NULL,
    count(temp.audit_id) AS `count`,
    temp.destination,
    temp.db_id,
    temp.audit_subsite_id,
    temp.subsite_desc,
    DATE_FORMAT(temp.audit_date, '%Y-%m-%d') AS search_date
FROM
    (
        SELECT DISTINCT
            a.audit_id,
            fs.destination,
            (SELECT
                db_id
             FROM gns.db_id) as db_id,
            a.audit_subsite_id,
            s.subsite_desc,
            a.audit_date
        FROM
            audit_flight_search fs
        INNER JOIN audit a ON a.audit_id = fs.audit_id
        INNER JOIN gns.subsite s ON a.audit_subsite_id = s.subsite_id
        WHERE
            a.audit_date >= CURRENT_DATE() - INTERVAL 1 DAY
        AND a.audit_date < CURRENT_DATE()
        AND fs.flight_type = 'ROUNDTRIP'
        and (a.audit_member_id IS NULL OR a.audit_member_id != 10172424)
    ) temp
GROUP BY
    temp.subsite_desc,
    temp.destination
ORDER BY
    temp.subsite_desc ASC,
    `count` DESC
)