0

データベースに2つのテーブルがあります:table_1table_2

table_13つの列、つまり、、が含まれていa_idますa_zonea_address

table_24つの列、つまり、、、、が含まれてp_idいますnot_usep_zonep_address

行番号は2つのテーブルで同じではありません。table_1の( a_zone、)の「DATASET」を。の( 、 )と比較する必要があります。a_addressp_zonep_addresstable_2

例を挙げましょう:

Table1 contains:

a_zone  a_address
=================
1       8
2       9
3       6
4       9
5       2

Table2 contains:

p_zone  p_address
=================
1       8
2       9
3       6
4       9
5       8

ここで、このa_zone、a_address = p_zone、p_addressのように比較する必要があります。

a_zoneのみをonlyp_zoneまたはonlya_addressとのみ比較する必要はありませんp_address。むしろ、データの組み合わせ全体を比較する必要があります。上記の例では、18と18を比較する必要があります[ a_zonea_addressWITH p_zonep_address]

私はそれに固執していて、本当に助けが必要です。私に提案してください....:)

4

3 に答える 3

0

私が正しく理解していれば、次のように2つのネストされたwhileループを実行することはできません。

$query1 = get a_zone and a_address from table_1;
$query2 = get p_zone and p_address from table_2;

while($row = mysql_fetch_array($query1)) {
    $a_zone = $row['a_zone'];
    $a_address = $row['a_address'];
    while($row = mysql_fetch_array($query2)) {
        if($a_zone == $row['p_zone'] && $a_address == $row['p_address']) {
            do_something;
        }
    }
}
于 2012-11-24T09:15:34.803 に答える
0

次のようなクエリから始めることができます。

SELECT *
FROM table_1 left join table_2
     on table_1.a_zone = table_2.p_zone
        and table_1.a_address = table_2.p_address
UNION
SELECT *
FROM table_1 right join table_2
     on table_1.a_zone = table_2.p_zone
        and table_1.a_address = table_2.p_address

そして、次のようないくつかの条件を追加できます。

SELECT *
FROM table_1 left join table_2
     on table_1.a_zone = table_2.p_zone
        and table_1.a_address = table_2.p_address
WHERE table_2.p_id is null or table_1.a_id <> table_2.p_id
UNION
SELECT *
FROM table_1 right join table_2
     on table_1.a_zone = table_2.p_zone
        and table_1.a_address = table_2.p_address
WHERE table_1.p_id is null or table_1.a_id <> table_2.p_id

しかし、それはテーブルをどのように比較する必要があるかによって異なります。

于 2012-11-24T09:15:34.833 に答える
0

返すデータを指定していないので、単純な結合を想定しています。

私があなたの質問を誤解しない限り、私はあなたが組合を必要とするとは思わない。私はあなたが単一の結合でこれを行うことができると思う:

SELECT *
 FROM table_1 JOIN table_2 
 WHERE (table_1.a_zone = table_2.p_zone) && (table_1.a_address = table_2.p_address);

これは次を返します:

ここに画像の説明を入力してください

于 2012-11-24T09:45:51.367 に答える