Al Capone Ierakstīts Februāris 15, 2012 Share Ierakstīts Februāris 15, 2012 Labdien forumieši .. ir query: SELECT DISTINCT items, opt1, opt2 FROM table ... kurš atlasa sekojošus rezultātus: items opt1 opt2 1 1 0 2 1 1 2 1 2 2 1 3 2 1 4 nepieciešams katram "items" dabūt opt2 rezultātus (rindā..), daru šādi: SELECT DISTINCT items, opt1, GROUP_CONCAT(opt2 SEPERATOR ', ') as concat_opt2 FROM table ... un dabūju rezultātus: items opt1 concat_opt2 1 1 0, 1, 2, 3, 4 kas pavisam neder :\ vēlamais\nepieciešamais rezultāts: items opt1 concat_opt2 1 1 0 2 1 1, 2, 3, 4 kā? Link to comment Share on other sites More sharing options...
Леший Februāris 15, 2012 Share Februāris 15, 2012 (labots) DISTINCT šajā gadījumā neder SELECT items, opt1, GROUP_CONCAT(opt2 SEPARATOR ', ') as concat_opt2 FROM table GROUP BY items Labots Februāris 15, 2012 - Леший 1 Link to comment Share on other sites More sharing options...
Al Capone Februāris 15, 2012 Author Share Februāris 15, 2012 (labots) Paldies! follow up.. neliela aizķerīte sanāca.. :[ query izskatas aptuveni šādi: SELECT table1.items, table2.opt1, GROUP_CONCAT(table3.opt2 SEPERATOR ', ') as concat_opt2 FROM table1 LEFT JOIN table2 ON table1.id = table2.table1_id .... LEFT JOIN table3 ON table2.id = table3.table2_id WHERE ... HAVING (SELECT COUNT(*) FROM table3 WHERE table2.id = table3.table2_id AND table3.opt2 = 1)) = (1) respektīvi dzēšot 4.rindu - GROUP_CONCAT un 9.rindu LEFT JOIN table3 ON table2.id = table3.table2_id query strādā, bet nu jā.. tagad strīdās ar mani un saka: Unknown column 'database.table2.id' in 'where clause' wassup with that? (group by vēl neesu ielicis..) Labots Februāris 15, 2012 - Crabby Link to comment Share on other sites More sharing options...
Леший Februāris 15, 2012 Share Februāris 15, 2012 MySQLam var nepatikt, kad join clause aprakstā tu liec joinojamo tabulu, kā 2. Paprovē tā: LEFT JOIN table2 ON table2.table1_id = table1.id Un vispār, iekš table2 ir lauks ID? Link to comment Share on other sites More sharing options...
Al Capone Februāris 15, 2012 Author Share Februāris 15, 2012 (labots) samainīju, diemžēl nestrādā.. :[ (ir lauks - ar aizdomu pilnām acīm skatījos, bet ir :} ) kaut kas tajā HAVING clausē nav riktīgi.. izmainīju to HAVING clausi uz sekojošu (pievienoju table2 FROM laukā) (SELECT COUNT(*) FROM table3, table2 WHERE table2.id = table3.table2_id AND table3.opt2 = 1)) = (1) un query izpildas, tik šķiet rezultāti nav cerētie.. :[ Intresanti liekas tas, ka bez LEFTJOIN un GROUP_CONCAT viss ir tip / top ... (pēc hokeja turpināšu - tad ar iepostēšu kas un kā..) Labots Februāris 15, 2012 - Crabby Link to comment Share on other sites More sharing options...
Леший Februāris 15, 2012 Share Februāris 15, 2012 Tu countu vari taisīt arī bez subquery, kas ir evil. Piemērs: SELECT *, count(*) AS cnt FROM table GROUP BY lauks Link to comment Share on other sites More sharing options...
Al Capone Februāris 15, 2012 Author Share Februāris 15, 2012 mkay, risinājums takā atradās: Iekš HAVING subquery iekš WHERE klauses ir table2.id pie kura tad mysqls āri bļāva - unknown column ... lai atrisinātu pievienojam (selektojam) šo table2.id iekš "galvenā" query.. viss tip top.. ziņkāre moka kāpēc query defekts parādās tikai pēc GROUP_CONCAT izmantošanas :| Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!