0

質問があります:

SELECT info.pID, Name, Addr, Phone, GROUP_CONCAT(URL) as URL FROM info, images WHERE info.pID = images.pID AND place='$place';

結果が見つからない場合でも、1 つの行が作成されます (num_rows および js .length で示されているように)。これは通常のことではありません。

JSON 結果の出力:

[{"0":null,"pID":null,"1":null,"Name":null,"2":null,"Addr":null,"3":null,"Phone":null,"4":null,"URL":null}]
4

2 に答える 2

3

これGROUP_CONCATは、すべての集計関数が同様の動作をしており、クエリが実行され、結果セットを構築するときに連結が実行されるためです。結果がない場合は NULL を連結し、それ以外の場合は空の結果セットに追加されます。1 つのフィールドに値 (この場合は関数によって返される NULL) が保持されている場合、他のすべてのフィールドも (明らかに) 表示されます。

これは、すべてが null である 1 行の結果を説明しています。group_concat を削除すると、結果が返されません。他の集計関数COUNT()が同じ状況でどのように動作するかを考えてみてください。
ここにすべての集計関数のリストがあります

于 2012-09-11T11:56:35.920 に答える
0

で指定された行にデータを含む他の列がある可能性がありますplace='$place'

SELECT前の後FROMの部分は、クエリの残りの部分から取得した結果のみをフィルター処理します。したがって、FROM info, images WHERE info.pID = images.pID AND place='$place';何かが見つかった場合は結果が得られます。次に、結果をフィルタリングし、空になる可能性のある特定の列のみを選択するため、結果が得られます。

于 2012-09-11T11:50:10.260 に答える