1

一度に2つの選択クエリを実行したいのですが、データは互いに関連していないため、LEFT JOInなどは実行できません..使用できないデータになってしまうためです。

これまでに得たものは次のとおりです。

$sql .= "SELECT *,
        servertypes.id as servertypeID, 
        servertypes.name as servertypeName 
       FROM servertypes";

$sql .= " JOIN".
    " (SELECT *,
        periods.id as periodID,
        periods.daysForSorting as periodNumber,
        periods.text as periodsText
       FROM periods
       ) AS periods";

$res = mysql_query($sql);
if(!$res) die("database_error_cant_select_data : ".$sql." : ".mysql_error());

しかし、どうすれば個別にアクセスできますservertypesperiods? JOIN の使用を完全に停止する必要があると思いますが、わかりません...

私が何を意味するかを説明するために、それは次のようなものです:

while ($row = mysql_fetch_assoc($res["servertypes"]))
{
    print_r($row);
    echo"<br/><br/>";
}

while ($row = mysql_fetch_assoc($res["periods"]))
{
    print_r($row);
    echo"<br/><br/>";
}

これは、1 つのクエリのみを使用して可能ですか?

4

4 に答える 4

2

通常、両方のクエリが同じ列番号を返す場合は、そのようなことを行うことができます

Table1
-----------
ProductID
Price
Qty

Table2
-----------
ProductID
Price
Qty

$Query = '(SELECT "Table1" AS Source, * FROM Table1) UNION (SELECT "Table2" AS Source, * FROM Table2)';

$Data = array('T1' => array(), 'T2' => array());
while($Assoc = mysql_fetch_assoc($Query)){
    switch(strtoupper($Assoc['Source'])){
        case 'TABLE1':
            $Data['T1'][] = $Assoc;
            break;

        case 'TABLE2':
            $Data['T2'][] = $Assoc;
            break;

        default:
            break;
    }
}

//  $Data['T1'] now hold everything from Table1
//  $Data['T2'] now hold everything from Table2

しかし、ここでは何も関係ありません。だからあなたの質問に答えるために:いいえ、あなたはあなたが望むことをすることはできません。

于 2012-05-30T16:40:38.840 に答える
1

multi_query()/ use_result()/ next_result()関数を確認してください。例を次に示します。

http://www.robert-gonzalez.com/2007/06/01/mysql-multiple-result-procs-in-php/

理想的には、そうする必要はありません。

于 2012-05-30T16:41:55.403 に答える
0

1つのクエリでデータを結合する意味はありません。参加しようとしているエンティティはまったく異なり、相互にリンクしていません。それらを個別に操作する場合は、個別のクエリを実行してください

于 2012-05-30T16:42:06.387 に答える
0

(競合状態を避けるために) 一緒に選択する必要がある場合は、トランザクションを使用する必要があります。

begin transaction;
.....queries....
commit;
于 2012-05-30T16:44:22.303 に答える