0

ここは初めてで、初心者なのでバカっぽいです:)

最初のクエリで結果が生成されない場合、2番目のクエリが2番目のデータベースで同じものを検索するように、2つのデータベースからmysqlで2つのクエリを実行したいと思います。

自動車保険のデータがあり、個人のお客様用と法人のお客様用の2つのデータベースがあります。chasis車両番号またはエンジン番号で車両を検索する必要があります。両方のデータベースからですが、最初のデータベースから結果が見つからない場合は、2番目のデータベースに移動する必要があります。

最初のクエリ:

SELECT * FROM skpoly_vw4 WHERE CHASIS = 878933

2番目のクエリ:

SELECT * FROM vw_motorschedule where sw_skpoly_chasis = 878933

私たちは1つのデータベースを持っていますが、その中には2つの異なるビューがあります。これらは個人のお客様にはskpoly_vw4であり、企業のお客様にはvw_motorscheduleです。

4

3 に答える 3

2

これはどう?

SELECT SQL_CALC_FOUND_ROWS * 
FROM DATABASE1
WHERE database1_CHASIS = 12345**

UNION ALL

SELECT * 
FROM DATABASE2 
WHERE FOUND_ROWS() = 0 AND database2_chasis= 12345** 

デモ

アップデート1

会話ごとに、mysqlエラー番号1222が発生します。これは、テーブルskpoly_vw4vw_motorscheduleフィールドの数が同じではないために発生しています。UNION ALLの場合、フィールドは同じである必要があります。

たとえば、table1にはidとnameがあり、table2にはid、fname、lnameがあります。これを使用しようとするUNION ALLselect *、table1のように機能しませんが、table2には3つの列があります。

あなたが私が言うつもりだったものを手に入れたことを願っています。

また、列数が異なる2つのテーブルからselect*を読み取ります。

于 2012-06-27T08:45:50.477 に答える
0

SELECT FOUND_ROWS( )最初のクエリを実行した後にを使用します。

つまり、2番目のクエリを実行する前に、次のことを確認します。SELECT FOUND_ROWS( )>0

編集:ここに例があります

SELECT * FROM skpoly_vw4 WHERE CHASIS = 878933

DECLARE @rows INT
SET @rows= FOUND_ROWS();
if (@rows>0)
SELECT * FROM vw_motorschedule where sw_skpoly_chasis = 878933
于 2012-06-27T08:18:37.350 に答える
0

これを試して

$query = mysql_query("SELECT * FROM DATABASE1 WHERE database1_CHASIS = 12345");

if(mysql_num_rows($query)==0){
   $query = mysql_query("SELECT * FROM DATABASE2 where database2_chasis= 12345");
}

$customer = mysql_fetch_assoc($query);
于 2012-06-27T08:24:14.443 に答える