1

これは私のUNIONALLクエリですが、機能しません。理由はわかりません。正しいようです。

        SELECT 
                ID AS IDzivotinja, zivotinja 
                FROM zivotinje WHERE IDveterinar=$ID
        UNION ALL
        SELECT 
                ID AS IDsimptom, simptom 
                FROM simptomi WHERE IDveterinar=$ID
        UNION ALL
        SELECT
                ID AS IDterminza, terminza
                FROM termniniza WHERE IDveterinar=$ID
4

2 に答える 2

1

UNION内の各SELECTステートメントには、同じ数の列が必要であることに注意してください。列も同様のデータ型である必要があります。また、各SELECTステートメントの列は同じ順序である必要があります。次のSQLクエリが機能するはずです。ぜひお試しください。

編集:対応する列のデータ型が同じでない場合は、次のようにそれらを同じデータ型に変換できます。

 SELECT 
        ID AS IDzivotinja, CAST(zivotinja AS CHAR) AS Col2
        FROM zivotinje WHERE IDveterinar=$ID
UNION ALL
SELECT 
        ID AS IDzivotinja, CAST(simptom  AS CHAR) AS Col2
        FROM simptomi WHERE IDveterinar=$ID
UNION ALL
SELECT
        ID AS IDzivotinja, CAST(terminza AS CHAR) AS Col2
        FROM termniniza WHERE IDveterinar=$ID
于 2013-03-02T14:03:52.703 に答える
1

列は互いに一致する必要があります。

SELECT  ID, zivotinja as ColName, 'zivotinje' tableName
FROM    zivotinje 
WHERE   IDveterinar=$ID
UNION ALL
SELECT  ID, simptom as ColName, 'simptomi' tableName
FROM    simptomi 
WHERE   IDveterinar=$ID
UNION ALL
SELECT  ID, terminza as ColName, 'termniniza' tableName
FROM    termniniza 
WHERE   IDveterinar=$ID

もう1つ、これは単なる推測です

列、、zivotinjaが単なるユーザー定義値である場合(simptomそして、その目的は、値の取得元のテーブルを定義するために使用されます)、一重引用符で囲む必要があります。terminza

SELECT  ID, 'zivotinja' as ColName
FROM    zivotinje 
WHERE   IDveterinar=$ID
UNION ALL
SELECT  ID, 'simptom' as ColName
FROM    simptomi 
WHERE   IDveterinar=$ID
UNION ALL
SELECT  ID, 'terminza' as ColName
FROM    termniniza 
WHERE   IDveterinar=$ID
于 2013-03-02T14:05:11.423 に答える