私は2つのテーブル、確立とブランチを持っています。 Establishmentは親テーブルです。ブランチのリストを選択すると、ブランチのタイトルが空白の場合、そのブランチの名前を取得します。また、私は、各事業所に対して1回だけ支店を見せたいと思っています。これは私が思いついたものです:ORDER BYはGROUP BYで期待通りに動作しません
SELECT
branch.id
, branch.establishment_ID
, IFNULL(branch.branch_title, establishment.name) AS branch_title
FROM branch
LEFT JOIN establishment ON branch.establishment_ID = establishment.id
WHERE cityID = 2
GROUP BY establishment_ID
ORDER BY branch_title
しかし、結果は、特定の順序で表示されません。私はそれらをアルファベット順にしたい。私は、MySQL 5.0.5が同じクエリでGROUP BYとORDER BYの問題を抱えていたことを読んだが、私は5.5.9で作業している。このクエリを修正するにはどうすればよいですか?
グループは不定です。それはあなたの問題です。クエリ全体が意味をなさないので、無関係な行のデータが混ざります。 – Johan
branch.idとestablishment_idに集約関数を使用していません。複数のestablishidまたは分岐IDがある場合、グループ化するときに選択されたものを決定するために集約関数(たとえばmax)を指定する必要があります。 – macleojw
3つの非集約、branch.id、branch.establishment_ID、branch_titleを選択していますが、それらのうちの1つでグループ化します(これは無効ですが、mysqlは文句を言いません)。 3つすべてをグループ化する必要があります。 – nos