1

質問がありますが、まだ答えが見つからないようです (本当の問題を解決したのは難しいです)。

私はかなり大きなクエリを持っています..3〜4か月間は問題なく動作しました.アイテムを追加してアプリケーション内で作業することでいくつかの変更が加えられた後、group_concatを使用したサブクエリは複数の行を返しました.group_concatのポイントは連結することです.すべての項目が 1 行に ?!

単純化されたクエリは次のようになります。

(SELECT * FROM (SELECT id,
             (other_selects),
    (SELECT GROUP_CONCAT(' ',IF(user_nume IS NOT NULL, (
                    SELECT CONCAT(user_nume,' ',user_prenume)
                    FROM table
                    WHERE u2.user_id = cal_id_user
                    AND i1.cai_id = cal_id_imobil
                    ), (
                        SELECT user_company
                        FROM table
                        WHERE u2.user_id = cal_id_user
                        AND i1.cai_id = cal_id_imobil
                        ) ))
    FROM table2 u2) as locatari,
    ( other selects )   
    .........................
    FROM table3 i1
    ...... JOINS ............
GROUP BY cai_id
ORDER BY cai_id DESC)t" ;)

このサブクエリは複数の行を返していますが、その方法がわかりません。

テーブル名を削除したことに言及する必要があります。JOINS またはその他のシンタックス エラーに問題はありません。

この問題の解決策は、

GROUP BY cal_id_user

IF条件内の両方のSELECTで。

誰かがこの問題がどのように可能であるかを説明してもらえますか? 残念ながら、この種の問題に対する正確な答えは見つかりませんでした。

お時間をいただきありがとうございます。

4

1 に答える 1

1

問題は、MySQL では GROUP BY 句を使用せずに集計関数を使用できることです。これは正気ではありません。GROUP BY がなくても、クエリは MySQL で機能しますが、これが正しいとは限りません。(表示される MSSQL でこれを試してください。)

于 2012-08-23T07:19:49.747 に答える