2016-11-17 12 views
-1

私はなぜこのコードがうまくいかないのか説明できますか? phpMyAdminのでデータベースから2つのテーブルのデータを取得する方法は?

SELECT SUM(`cash`) AS `cash`,COUNT(*) AS `rows` FROM `table_1` WHERE `login` = 'test' UNION ALL SELECT COUNT(*) AS `rows2` FROM `table_2` WHERE `login` = 'test'; 

私はこのメッセージが表示されます。

1222 - 使用SELECTステートメントは、列

の異なる数を持っていると私は、この問題を解決することができませんでした。

+1

を、あなたはその結果世話をする必要があり両方の単一クエリのセットは構造が似ているため、単一のテーブルに組み合わせることができます。どのようにエンジンは、これらの2つのセットからテーブルを作成する必要がありますか? – arkascha

+0

ええ、私はMySQLの初心者です。 – Dawid77

+0

サンプルコードを表示できますか? – Dawid77

答えて

0

UNIONは、複数のSELECT文の結果を1つの結果セットとして表示します。しかし、これを行うには、個々のSELECTステートメントの列数が同じでなければなりません。それは、クエリを少しフォーマットするのを助けることができる、これを理解するには

SELECT 
     SUM(`cash`) AS `cash`, 
     COUNT(*) AS `rows` 
    FROM `table_1` 
    WHERE `login` = 'test' 
UNION ALL 
    SELECT 
     COUNT(*) AS `rows2` 
    FROM `table_2` 
    WHERE `login` = 'test' 

あなたの最初のクエリは、2つの列、現金を選択しています。 2番目のクエリでは、1つの列、rows2のみが選択されます。また、UNIONは結果を連結しているので、同じ名前で各クエリの対応する列を呼び出すこともできます。あなたは本当にあなたが第二のテーブルから選択したい任意の値を持っていない場合

、あなたが不足している列のデフォルト値を置き換えることができます:まあ

SELECT 
     SUM(`cash`) AS `cash`, 
     COUNT(*) AS `rows` 
    FROM `table_1` 
    WHERE `login` = 'test' 
UNION ALL 
    SELECT 
     NULL AS `cash` 
     COUNT(*) AS `rows` 
    FROM `table_2` 
    WHERE `login` = 'test' 
関連する問題