0

データベース内の 2 つのテーブルに対して単純なユニオン クエリのように見えるものを試していますが、成功した配列結果を取得することはできません。各テーブルには異なる列があり、仮想結果を作成したいことに注意してください (promo AS origin [「venpromo」テーブルから取得した結果の場合] &&vacation AS origin [「vacation」から取得した結果の場合) ' table]) 結果を異なる配列構造にソートするため。私はいたるところを見てきましたが、UNIONSはすべて異なる構文を使用しています。よろしくお願いします!

<?php
    require_once('includes/config.php');

    $event_query = "SELECT *, promo AS origin FROM venpromo
    UNION 
    SELECT *, vacation AS origin FROM venpromo 
    ORDER BY popularity DESC";
    $event_result = mysql_query($event_query, $connection);
    while ($event = mysql_fetch_array($event_result)) {
        if ($event['origin'] == "promo") {
            $event_array[] = array(
                'id' => $event['id'],
                'title' => $event['calname'],
                'start' => $event['sdate'],
                'end' => $event['edate'],
                'color' => "red",
                'url' => "http://www.norrisportal.com/bulletinpost.php?id=" . $event['id'] . "&hashkey=akdULjsjyUpYyTzOT7"
            );
        } elseif ($event['origin'] == "vacation") {
            $event_array[] = array(
                'id' => $event['id'],
                'title' => $event['reason'],
                'start' => $event['vacstart'],
                'end' => $event['vacend'],
                'color' => "blue"
            );
        }
    }

    echo json_encode($event_array);

?>

ページにアクセスして結果を表示すると、「null」と表示されます。

4

1 に答える 1

2

* ではなく明示的に列名を入力し、列の数とデータ型が各選択の同じ列と一致していることを確認してください。

両方のテーブルの数とデータ型に一致するようにいくつかのダミー列を追加し、列の順序も変更しました。

このサンプル方法を試してください::

select 
id,
uid,
approval,
vacstart,
vacend,
reason,
'dummy1' col1,
'dummy2' col2,
'dummy3' col3,
curdate() col4,
'dummy4' col5,
'dummy5' col6,
'dummy6' col7,
'dummy7' col8,
promo AS origin
from vacation
union
select
id,
venid,
authid,
sdate,
edate,
authname,
tags,
title,
calname,
date,
intro,
body,
sum,
sortdate,
vacation AS origin
from venpromo;
于 2013-01-02T08:03:14.350 に答える