Jump to content
php.lv forumi

Palīdziet ar sql kveriju.


Recommended Posts

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

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

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 by Zandis Murāns
Link to comment
Share on other sites

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

×
×
  • Create New...