2011-10-18 14 views
-1

このエラーの原因は何ですか?どのようにそれを修正できますか?エラー:使用されたSELECTステートメントの列数が異なりますが、どのように修正しますか?

$find = 'hello'; 
$data = $this->db->query('SELECT * FROM tour_foreign_residence WHERE name LIKE "%' . $find . '%" UNION SELECT * FROM tour_foreign WHERE name LIKE "%' . $find . '%"'); 

エラー:

A Database Error Occurred
Error Number: 1222
The used SELECT statements have a different number of columns
SELECT * FROM tour_foreign_residence WHERE name LIKE "%hello%" UNION SELECT * FROM tour_foreign WHERE name LIKE "%hello%"
Filename: D:\xampp\htdocs\system\database\DB_driver.php
Line Number: 330

+0

2つの別々の選択を使用しますか? –

+1

'select *'を使わないで、必要な列を指定してください。 'union 'の異なる部分の列は、同じデータ型を持たなければならず、同じ数の列でなければなりません。それが達成できない場合は、2つの独立した選択ステートメントが必要です。 –

+0

ここに私のポストを読んでください:http://stackoverflow.com/questions/7800259/select-data-from-a-database-and-other-database-related-to-theはUNIONまたは何から使うべきですか?それは私の質問の中でどうですか? –

答えて

0

いけないクエリでSELECT *を使用しています。代わりに、データベースから取得する実際の列名を書き留めてください。列名は、両方の表から同じにする必要があります。あなたは現在UNIONを持っていて、テーブルtour_foreign_residencetour_foreignは異なる列を持っているようです。

+0

ここに私の記事を読んでください:http://stackoverflow.com/questions/7800259/select-data-from-a-database-and-other-database-related-to-theはUNIONまたは何から使うべきですか?それは私の質問の中でどうですか? –

1

UNIONが本当に必要ですか?

UNIONでは、結合しているすべてのクエリのSELECT句のカラム数が同じである必要があるため、*を使用するのではなく、クエリに必要なフィールドを明示的に記述してください。また、clumnsは同じデータ型を持つ必要があります。 w3schools article about UNION operatorによると

+0

ここに私のポストを読んでください:http://stackoverflow.com/questions/7800259/select-data-from-a-database-and-other-database-related-to-theはUNIONまたは何から使うべきですか?それは私の質問の中でどうですか? –

0

:あり

Each SELECT statement within the UNION must have the same number of columns. The columns must also have similar data types. Also, the columns in each SELECT statement must be in the same order.

+0

ここに私の記事を読んでください:http://stackoverflow.com/questions/7800259/select-data-from-a-database-and-other-database-related-to-theはUNIONまたは何から使うべきですか?それは私の質問の中でどうですか? –

2

UNION演算子を使用するための2つの主なルール:

  1. カウントと順序は列が労働組合に等しくなるべきであるretreivedは列を流用におけるデータの
  2. タイプを問い合わせます互換性がなければなりません

あなたの場合、最初のルールは無視されます。 代わりにjoin演算子を使用

+0

ここに私の記事を読んでください:http://stackoverflow.com/questions/7800259/select-data-from-a-database-and-other-database-related-to-theはUNIONまたは何から使うべきですか?それは私の質問の中でどうですか? –

関連する問題