[Dbix-class] Fetching distinct data

Rob Kinyon rob.kinyon at gmail.com
Mon Jul 1 19:18:39 GMT 2013


SSd2ZSBiZWVuIHRvbGQgSSBzaG91bGQgZWxhYm9yYXRlLgoKZGlzdGluY3Q9PjEgZG9lc24ndCBy
ZXF1aXJlIHRoYXQgeW91IHNwZWNpZnkgdGhlIHNlbGVjdGVkIGNvbHVtbnMgaW4gb3JkZXIKdG8g
d29yay4gImRpc3RpbmN0PT4xIiAobW9kdWxvIGEgZmV3IG5pdHMpIGlzIHJlYWxseSBzdWdhciBm
b3IgImdyb3VwX2J5Cm92ZXIgYWxsIHNlbGVjdGVkIGNvbHVtbnMiLgoKVGhlIGtleSBoZXJlIGlz
IHRoYXQgeW91IG9mdGVuIGRvbid0IHJlYWxpemUgeW91J3JlIG5vdCBnZXR0aW5nIGFzIGRpc3Rp
bmN0CmFzIHlvdSByZWFsbHkgd2FudC4gQW4gZXhhbXBsZSBtYXkgaGVscC4KCkxldCdzIHNheSB5
b3UgaGF2ZSB0d28gdGFibGVzIC0gb3JkZXJzIGFuZCBvcmRlcl9saW5laXRlbXMgd2l0aCB0aGUg
b2J2aW91cwoxOk4gcmVsYXRpb25zaGlwLiBZb3UncmUgYmVpbmcgYXNrZWQgdG8gZ2V0IGEgbGlz
dCBvZiBhbGwgY2l0aWVzIGFuZCBzdGF0ZXMKdGhhdCBoYXZlIGFuIG9yZGVyIGNvbnRhaW5pbmcg
YW4gaXRlbSB0aGF0J3MgZGFuZ2Vyb3VzIHRvIHNoaXAuICJEYW5nZXJvdXMKdG8gc2hpcCIgaXMg
b25lIG9mIHRocmVlIHR5cGVzLiBTbywgdGhlIFNRTCB3b3VsZCBiZToKClNFTEVDVCBvcmRlcnMu
Y2l0eSwgb3JkZXJzLnN0YXRlCkZST00gb3JkZXJzCkpPSU4gbGluZWl0ZW1zIE9OIChvcmRlcnMu
aWQgPSBsaW5laXRlbXMub3JkZXJfaWQpCldIRVJFIGxpbmVpdGVtcy50eXBlIElOICgxLCAzLCA5
KQpHUk9VUCBCWSBvcmRlcnMuY2l0eSwgb3JkZXJzLnN0YXRlCgpUaGUgbmFpdmUgc29sdXRpb24g
aW4gREJJQyB3b3VsZCBiZToKCiRzY2hlbWEtPnJlc3VsdHNldCgnb3JkZXJzJyktPnNlYXJjaCh7
CiAgICAnbGluZWl0ZW1zLnR5cGUnID0+IFsgMSwgMywgOSBdLAp9LCB7CiAgICBqb2luID0+ICds
aW5laXRlbXMnLAogICAgZGlzdGluY3QgPT4gMSwKfSk7CgpBbmQgdGhhdCB3aWxsIGdpdmUgeW91
IGEgcmVzdWx0c2V0IHdpdGggRVZFUlkgb3JkZXIgdGhhdCBoYXMgYSBsaW5laXRlbQp3aXRoIHRo
b3NlIGl0ZW1zLiBFdmVuIHdoZW4geW91IGRpZCBkaXN0aW5jdD0+MS4gVGhlIFNRTCB5b3UnbGwg
Z2V0IHdpbGwKbG9vayBzb21ldGhpbmcgbGlrZToKClNFTEVDVCBtZS5pZCwgbWUuZGF0ZSwgbWUu
Y2l0eSwgbWUuc3RhdGUsIG1lLnppcCwgbWUuYW1vdW50LCAuLi4KRlJPTSBvcmRlcnMgbWUKSk9J
TiBsaW5laXRlbXMgT04gKG9yZGVycy5pZCA9IGxpbmVpdGVtcy5vcmRlcl9pZCkKV0hFUkUgbGlu
ZWl0ZW1zLnR5cGUgSU4gKDEsIDMsIDkpCkdST1VQIEJZIG1lLmlkLCBtZS5kYXRlLCBtZS5jaXR5
LCBtZS5zdGF0ZSwgbWUuemlwLCBtZS5hbW91bnQsIC4uLgoKQWRkaW5nIHRoZSAic2VsZWN0ID0+
IFsgJ21lLmNpdHknLCAnbWUuc3RhdGUnIF0iIGNoYW5nZXMgdGhlIFNFTEVDVCBjbGF1c2UsCndo
aWNoIHRoZW4gY2hhbmdlcyB0aGUgR1JPVVAgQlkgY2xhdXNlLCBnaXZpbmcgeW91IHdoYXQgeW91
IHdhbnQsIGFzIHNvOgokc2NoZW1hLT5yZXN1bHRzZXQoJ29yZGVycycpLT5zZWFyY2goewogICAg
J2xpbmVpdGVtcy50eXBlJyA9PiBbIDEsIDMsIDkgXSwKfSwgewogICAgam9pbiA9PiAnbGluZWl0
ZW1zJywKICAgICdzZWxlY3QnID0+IFsgJ21lLmNpdHknLCAnbWUuc3RhdGUnIF0sCiAgICBkaXN0
aW5jdCA9PiAxLAp9KTsKCgpBbHRlcm5hdGVseSwgeW91IGNvdWxkIGRvOgokc2NoZW1hLT5yZXN1
bHRzZXQoJ29yZGVycycpLT5zZWFyY2goewogICAgJ2xpbmVpdGVtcy50eXBlJyA9PiBbIDEsIDMs
IDkgXSwKfSwgewogICAgam9pbiA9PiAnbGluZWl0ZW1zJywKICAgIGdyb3VwX2J5ID0+IFsgJ21l
LmNpdHknLCAnbWUuc3RhdGUnIF0sCn0pOwoKVGhpcyBpcyBsZXNzIGRlc2lyYWJsZSBmcm9tIGJv
dGggYSBTUUwgZXhlY3V0aW9uIHBlcnNwZWN0aXZlICh3aGljaCByb3dzCmRvZXMgdGhlIGVuZ2lu
ZSBwaWNrIGFuZCB3aHk/KSBhbmQgUGVybCBwZXJmb3JtYW5jZSBwZXJzcGVjdGl2ZSAod2hhdCBp
Zgp0aGVyZSBhcmUgc2V2ZXJhbCBsYXJnZSBjb2x1bW5zPykuIEFsc28sIGl0IG9iZnVzY2F0ZXMg
dGhlIGRldmVsb3BlciBpbnRlbnQKLSB0aGUgcm93cyBjb3VsZCBiZSB1c2VkIGZvciBzb21lIG90
aGVyIHB1cnBvc2Ugd2hpY2ggY291bGQgY2F1c2UKaGVpc2VuYnVncy4gTXVjaCBiZXR0ZXIgdG8g
d3JpdGUgaXQgd2l0aCB0aGUgc2VsZWN0IGNvbHVtbnMgY2xlYXJseQpzcGVjaWZpZWQuIFRoYXQg
d2F5LCBEQklDIGRvZXNuJ3QgZmlsbCB0aGUgb3RoZXIgYXR0cmlidXRlcy4KClJvYgoKCgpPbiBN
b24sIEp1bCAxLCAyMDEzIGF0IDg6NTcgQU0sIFJvYiBLaW55b24gPHJvYi5raW55b25AZ21haWwu
Y29tPiB3cm90ZToKCj4gRm9yIHRoaXMgdG8gd29yaywgeW91J2QgbmVlZCB0byBzcGVjaWZ5IHdo
aWNoIGNvbHVtbnMgeW91J3JlIHJldHVybmluZy4KPiBTbywgc29tZXRoaW5nIGxpa2U6Cj4KPiAk
c2NoZW1hLT5yZXN1bHRzZXQoJ0ZpcnN0JyktPnNlYXJjaCh7Cj4gICAgICdzZWNvbmQuYXR0cicg
PT4geyAtaW4gPT4gWyAxLCAyLCAzIF0gfSwKPiB9LCB7Cj4gICAgIGpvaW4gPT4gJ3NlY29uZCcs
Cj4gICAgIHNlbGVjdCA9PiBbICdtZS5pZCcsICdtZS5hdHRyMScsICdtZS5hdHRyMicgXSwKPiAg
ICAgZGlzdGluY3QgPT4gMSwKPiB9KTsKPgo+IE5vdGU6IHRoaXMgbWVhbnMgeW91IHdvbid0IGJl
IGFibGUgdG8gZG8gJHJvdy0+YXR0cjMgbGlrZSB5b3UnZCBub3JtYWxseQo+IGJlIGFibGUgdG8u
IEJlY2F1c2UsIHdlbGwsIHlvdSBkaWRuJ3QgZ2V0IGl0IGJhY2suIDopCj4KPgo+IE9uIE1vbiwg
SnVsIDEsIDIwMTMgYXQgODo1MCBBTSwgQmlsbCBNb3NlbGV5IDxtb3NlbGV5QGhhbmsub3JnPiB3
cm90ZToKPgo+Pgo+Pgo+PiBPbiBNb24sIEp1bCAxLCAyMDEzIGF0IDY6NTcgQU0sIERtaXRyeSBC
ZWx5YXZza3kgPGJlbGRtaXRAZ21haWwuY29tPndyb3RlOgo+Pgo+Pj4gR3JlYXRpbmchCj4+Pgo+
Pj4gSSBoYXZlIDIgdGFibGVzIGhhdmluZyBvbmUtdG8tbWFueSByZWxhdGlvbi4KPj4+Cj4+PiBJ
IHdhbnQgdG8gZ2V0IGFsbCBkYXRhIGZyb20gdGhlIDFzdCB0YWJsZSBmaWx0ZXJlZCBieSBhbiBh
dHRyIGZyb20gdGhlCj4+PiAybmQgb25lLgo+Pj4KPj4+IFNvIEkgd3JpdGUKPj4+Cj4+PiAkc2No
ZW1hLT5yZXN1bHRzZXQoIkZpcnN0IiktPnNlYXJjaCh7c2Vjb25kcy5hdHRyID0+IHstaW4gPT4g
WzEsMiwzXX19LAo+Pj4ge2pvaW4gPT4gc2Vjb25kfSApOwo+Pj4KPj4+IFRoZSByZXN1bHRpbmcg
cXVldWUgZG9lcyBub3QgY29udGFpbiB0aGUgRElTVElOQ1Qga2V5d29yZCBzbyBJIGdldCBtdWNo
Cj4+PiBtb3JlIHJlY29yZHMgaW4gdGhlIHJlc3VsdHNldCB0aGFuIEkgd2FudC4KPj4+Cj4+PiBT
byBob3cgY2FuIEkgZW5mb3JjZSB0aGUgREJJeDo6Q2xhc3MgdG8gd3JpdGUgYSBxdWVyeSBsaWtl
Cj4+Pgo+Pj4gU2VsZWN0IGRpc3RpbmN0IG1lLmlkLCBtZS5hdHRyMSwgbWUuYXR0cjIKPj4+IGZy
b20gZmlyc3QgbWUKPj4+IGxlZnQgam9pbiBzZWNvbmQgT04gbWUuaWQ9c2Vjb25kLmZpcnN0X2lk
Cj4+PiB3aGVyZSBzZWNvbmQuYXR0ciBub3QgaW4gKDEsMiwzKQo+Pj4KPj4KPj4gSXMgdGhpcyB3
aGF0IHlvdSBhcmUgYWZ0ZXI/Cj4+Cj4+Cj4+IGh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfnJpYmFz
dXNoaS9EQkl4LUNsYXNzLTAuMDgyNTAvbGliL0RCSXgvQ2xhc3MvUmVzdWx0U2V0LnBtI2Rpc3Rp
bmN0Cj4+Cj4+Cj4+Cj4+IC0tCj4+IEJpbGwgTW9zZWxleQo+PiBtb3NlbGV5QGhhbmsub3JnCj4+
IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IExpc3Q6
IGh0dHA6Ly9saXN0cy5zY3N5cy5jby51ay9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vZGJpeC1j
bGFzcwo+PiBJUkM6IGlyYy5wZXJsLm9yZyNkYml4LWNsYXNzCj4+IFNWTjogaHR0cDovL2Rldi5j
YXRhbHlzdC5wZXJsLm9yZy9yZXBvcy9iYXN0L0RCSXgtQ2xhc3MvCj4+IFNlYXJjaGFibGUgQXJj
aGl2ZToKPj4gaHR0cDovL3d3dy5ncm9rYmFzZS5jb20vZ3JvdXAvZGJpeC1jbGFzc0BsaXN0cy5z
Y3N5cy5jby51awo+Pgo+Cj4KPgo+IC0tCj4gVGhhbmtzLAo+IFJvYiBLaW55b24KPgoKCgotLSAK
VGhhbmtzLApSb2IgS2lueW9uCi0tLS0tLS0tLS0tLS0tIG5leHQgcGFydCAtLS0tLS0tLS0tLS0t
LQpBbiBIVE1MIGF0dGFjaG1lbnQgd2FzIHNjcnViYmVkLi4uClVSTDogaHR0cDovL2xpc3RzLnNj
c3lzLmNvLnVrL3BpcGVybWFpbC9kYml4LWNsYXNzL2F0dGFjaG1lbnRzLzIwMTMwNzAxL2Y5YTQ0
NzA5L2F0dGFjaG1lbnQtMDAwMS5odG0K


More information about the DBIx-Class mailing list