Zandis Murāns Posted May 7, 2008 Report Share Posted May 7, 2008 Man ir divas tabulas. Vienā glabā lietotājus (id, vārdu), otra glabā info, kādos pasākumos lietotājs ir piedalījies (lietotāja ID, pasākuma ID). Es gribu, lai sql kverijs atgriež divas kolonnas - lietotāja vārdu un info vai konkrētais lietotājs ir piedalījies konkrētajā pasākumā (piemēram, pasākumā ar ID 2). Tipa šitā: Rekur konkrēts piemērs. Lietotāji: id | vārds ---------- 1 | Jānis 2 | Pēteris 3 | Juris Pasākumi: id | nosaukums ----------------- 1 | Lieldienas 2 | Ziemassvētki Piedalījās: id_lietotājs | id_pasākums ------------------------------ 1 | 1 1 | 2 3 | 2 Ja pieprasa info par pasākumu 1 (Lieldienām), es gribu, lai kverijs atgriež sekojošu tabulu: vārds | piedalījās ------------------- Jānis | true Pēteris | false Juris | false Ja pieprasa info par pasākumu 2 (Ziemassvētkiem), es gribu, lai kverijs atgriež sekojošu tabulu: vārds | piedalījās ------------------- Jānis | true Pēteris | false Juris | true Link to comment Share on other sites More sharing options...
xPtv45z Posted May 7, 2008 Report Share Posted May 7, 2008 Kaut kā, apmēram, šādi.. SELECT lietotāji.vārds, piedalijās.id_pasākums AS piedalijās FROM lietotāji LEFT JOIN piedalijās ON piedalijās.id_lietotājs=lietotāji.id Link to comment Share on other sites More sharing options...
Zandis Murāns Posted May 7, 2008 Author Report Share Posted May 7, 2008 Kaut kā tā gan, es piekrītu, bet nebūs īsti tas, ko gribētos. Link to comment Share on other sites More sharing options...
bubu Posted May 7, 2008 Report Share Posted May 7, 2008 SELECT L.vards, IF(PL.id_pasakums, "true", "false") FROM lietotaji AS L LEFT JOIN piedalijas AS PL ON L.id = PL.id_lietotajs WHERE PL.id_pasakums = $pasakuma_id P.S. Topika nosaukums sūkā. Link to comment Share on other sites More sharing options...
Zandis Murāns Posted May 7, 2008 Author Report Share Posted May 7, 2008 (edited) PostgreSQL laikam nav tādas funkcijas IF, bet varbūt ir. Lai vai kā, tavā piemērā kaut kas nav legāli. Lieldienu pasākumā viņš nemaz neizvadīs tos pārējos, tikai to vienu rindu (Jāni) vai vienkāršāk - atlasīs tikai tos, kuri piedalījušies tajā pasākumā. Edited May 7, 2008 by Zandis Murāns Link to comment Share on other sites More sharing options...
bubu Posted May 7, 2008 Report Share Posted May 7, 2008 PostgreSQL laikam nav tādas funkcijas IF, bet varbūt ir. Principā vajag kautkādu funkciju F(x, y, z), kas ja x ir NULL tad atgriež y, citādā gadījumā atgriež z. Tieši to dara MySQL IF funkcija. 100 punkti, ka PostgreSQL'ā ir kautkas līdzīgs. Lai vai kā, tavā piemērā kaut kas nav legāli. Lieldienu pasākumā viņš nemaz neizvadīs tos pārējos, tikai to vienu rindu (Jāni) vai vienkāršāk - atlasīs tikai tos, kuri piedalījušies tajā pasākumā. Muļķības tu stāsti. Visu tur izvadīs. Jebkurā pasākumā tas izvadīs gan Jāni, gan Pēteri, gan arī Juri. Izskatās, ka tu nezini atšķirību starp JOIN un LEFT JOIN. Paskaties atšķirībut starp JOIN'iem. Noderēs. http://datubazes.wordpress.com/2008/02/11/sql-join-i/ http://datubazes.wordpress.com/2008/02/25/inner-join/ http://datubazes.wordpress.com/2008/03/04/outer-join/ Edit: Zandis uzdirsa, ka es tomēr melojot. Viņam izrādījās taisnība, es nokļūdījos. WHERE vietā kverijā vajag AND rakstīt. Link to comment Share on other sites More sharing options...
Recommended Posts