区分联合中的两个查询

时间:2014-03-05 06:24:43

标签: php mysql sql mysqli

如何在以下示例联合查询中区分记录的来源:

SELECT id, name, datetime FROM events
UNION
SELECT id, name, datetime FROM festival
ORDER BY datetime DESC

我在PHP中使用它的方式是:

$stmt = $cxn->prepare('SELECT id, name, datetime FROM events WHERE id = ? UNION SELECT id, name, datetime FROM festival WHERE id = ? ORDER BY datetime DESC');
$stmt->bind_param('i', $event_id);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($id, $name, $datetime);

while ($stmt->fetch()) {
    echo "ID: " . $id . "\n";
    echo "Name: " . $name . "\n";
    echo "Date: " . $datetime;
}

$stmt->close();

请帮帮我。

感谢。

2 个答案:

答案 0 :(得分:1)

SELECT id, name, datetime, 'events' FROM events
UNION
SELECT id, name, datetime, 'festival' FROM festival
ORDER BY datetime DESC

<强> PHP

$stmt = $cxn->prepare('SELECT id, name, datetime, "events" as tablename FROM events WHERE id = ? UNION SELECT id, name, datetime, "festival" as tablename FROM festival WHERE id = ? ORDER BY datetime DESC');
$stmt->bind_param('i', $event_id);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($id, $name, $datetime, $table);

while ($stmt->fetch()) {
    echo "ID: " . $id . "\n";
    echo "Name: " . $name . "\n";
    echo "Date: " . $datetime;
    echo "Which Table: " . $table;
}

$stmt->close();

答案 1 :(得分:0)

你可以通过添加一个列来区分它,如:

SELECT id, name, datetime, 'E' as fromwhere FROM events
UNION
SELECT id, name, datetime,'F' as fromwhere FROM festival
ORDER BY datetime DESC

fromwhere列会告诉您它是来自活动还是节日。