2

会社に関連付けられた名前のデータベースにアクセスしています。名前はテーブル内で一意です。同じ会社を持つ複数の人がいる可能性があります。会社ごとに情報を表示できるように、重複している場合は会社のインスタンスを1回だけ返す必要があります。私のコードは次のとおりです。

$result = $pdo->query('SELECT * FROM vendoreducation WHERE company LIKE "TestCompany" GROUP BY company');

それは明らかにうまくいきません、そして私は個々の会社を特定したくありません。DB内のすべての会社のリストを返すことができるようにしたいだけです。同じ会社名のエントリが複数ある場合は、そのうちの1つを返します。

編集 私が選んだ答えは正しい方向でしたが、私が最終的に行った答えはm.buettnerの答えでした。

4

3 に答える 3

2

コメントで説明をお願いしたいのですが、担当者が足りません。ごめんなさい。会社ごとに1行だけが必要な場合、他の列が何であるかは重要ですか?それとも、本当にすべての企業のリストを知りたいだけですか?

後者の場合、これは次のことを行う必要があります。

$result = $pdo->query('SELECT DISTINCT company FROM vendoreducation;');

もちろん、同じ会社のすべての行で同一になる列を含めることもできます。ただし、一部の列には(前述の名前のように)異なる値が含まれている可能性があるため、DISTINCTwith*を使用すると、おそらくすべての行が再び表示されます。

編集:LIMIT 1会社ごとに1つの完全な行が必要な場合は、上記の行で取得したすべての会社のリストを使用してから、個々の会社ごとにソリューションを順番に使用して、会社ごとに1つの行をクエリできます。しかし、それがオプションである場合(つまり、データベースを変更できる場合)は、とにかく正規化について考える必要があります。

于 2012-09-20T20:50:50.513 に答える
0

使用するDISTINCT

$result = $pdo->query('SELECT DISTINCT * FROM vendoreducation WHERE company LIKE "TestCompany"');
于 2012-09-20T20:36:26.093 に答える
0

$result = $pdo->query('SELECT * FROM vendoreducation WHERE company LIKE "TestCompany" GROUP BY company LIMIT 1');

また

$result = $pdo->query('SELECT distinct * FROM vendoreducation WHERE company LIKE "TestCompany" GROUP BY company');

于 2012-09-20T20:41:47.163 に答える