0

2 つの異なるテーブルがチェックされるクエリを実行できるかどうかを知りたいです。その結果、行数が返されるか、または true/false が返されます。

その理由は、関数があるからです:

function exists($email){
    global $db;
    $query = $db->query("SELECT Email FROM table1, table2 WHERE Email= '$email' ");
    $check = $query->num_rows;
    return ($check == 1) ? true : false;
}

これは、テーブルの構造が同じ場合にのみ機能することを知っています。私の場合はそうではありません。

両方のテーブルには共通のフィールド「email」があるだけで、他には何もありません。

table1 は次のようになります。

フィールド_1 | フィールド_2 | フィールド_3 | フィールド_4 | フィールド_5 | field_6 (電子メール) | フィールド_7 | フィールド_8 | field_9

table2 は次のようになります。

フィールド_1 | フィールド_2 | フィールド_3 | field_4 |.... | field_17 (メール) | フィールド_18 | フィールド_19 | field_20

それで、これが可能かどうか知りたいですか?JOIN を調べましたが、それをどうするかわかりませんでしたか?

4

3 に答える 3

2

以下を試してください:

SELECT SUM(cnt) as total_count
(
SELECT COUNT(*) as cnt FROM table1  WHERE Email= '$email' 
UNION 
SELECT COUNT(*) as cnt FROM table1  WHERE Email= '$email' 
)
于 2013-03-01T12:55:14.407 に答える
1

UNION を使用する必要があります。

SELECT email
FROM   table1
UNION
SELECT email
FROM   table2

http://dev.mysql.com/doc/refman/5.0/en/union.html

于 2013-03-01T12:55:29.233 に答える
0

のような共用体を使用できますSELECT email FROM table1 where Email = '$email' union SELECT email FROM table2 where Email = '$email'

選択された列の数は、両方のクエリで同じでなければならないことに注意してください。

また、実際には必要ないときに行をフェッチすることは、リソースの浪費です。一致する行の数をデータベースから直接取得するだけです。

于 2013-03-01T12:55:32.270 に答える