さまざまな値が格納されている列があるテーブルがあります。dqlを使用してそのテーブルから一意の値を取得したいと思います。
Doctrine_Query::create()
->select('rec.school')
->from('Records rec')
->where("rec.city='$city' ")
->execute();
今、私は一意の値だけが必要です。誰かがそれを行う方法を教えてもらえますか...
編集
テーブル構造:
CREATE TABLE IF NOT EXISTS `records` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`state` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`city` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`school` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=16334 ;
これは私が使用しているクエリです:
Doctrine_Query::create()
->select('DISTINCT rec.city')
->from('Records rec')
->where("rec.state = '$state'")
// ->getSql();
->execute();
このためのSQLを生成すると、次のようになります。
SELECT DISTINCT r.id AS r__id, r.city AS r__city FROM records r WHERE r.state = 'AR'
次に、生成されたsql :::: DISTINCTが'id'列にあることを確認します。ここで、都市列にDistinctが必要です。誰もがこれを修正する方法を知っています。
EDIT2
Idは一意であるため、自動増分値になります。デリーやデリーのように、都市の列に実際の重複がいくつかあります。そうです..データを取得しようとすると、デリーが2回取得されます。このようなクエリを作成するにはどうすればよいですか?
select DISTINCT rec.city where state="xyz";
これにより、適切な出力が得られます。
EDIT3:
このクエリを理解する方法を教えてくれる人は誰でも..???