Jump to content
php.lv forumi

limitēt ierakstus no vienas tabulas


mypoint

Recommended Posts

Kārtējā problēma manā pusē!

Lieta ir tāda ka vajadzētu limitēt lai no konkrētās tabulas (m) izvelk tikai vienu ierakstu.

$query="SELECT * FROM m,d WHERE d.did=m.id";

 

Pie viena arī pajautāšu intereses pēc:

Ja piemēram abām tabulām ir vienādi lauki.

m tabula:

ID | NAME | DATE

 

d tabula:

ID | NAME | DATE

 

Kā lai no abām tabulām izvelk DATE un NAME, ja abas tabulas ir sasaistītas:

$query="SELECT * FROM m,d WHERE d.name=m.name";

 

Paldies jau iepriekš!

Edited by mypoint
Link to comment
Share on other sites

vienkaŗšā gadījumā:

 

SELECT *
 FROM m, d
 WHERE m.name=d.name
 GROUP BY m.name;

 

ja vajdzīga kaut kāds nosacījums tam vienīgajam ierakstam, ko peisaistīt m tabulai no d, tad:

Šijā piemērā, tiks ņemts pēdējais atbilstošais d ieraksts.

SELECT *
 FROM m, (SELECT * FROM d ORDER BY id DESC) as d
 WHERE m.name=d.name
 GROUP BY m.name;

Link to comment
Share on other sites

Ja pieliksi klāt LIMIT 1, tad pagaidu tabulā būs tikai 1 ieraksts. Joinojot to ar m tabulu, tu dabūsi labi, ja vienu ierakstu vispār. Bet vajadzīgs ir katras m tabulas ierakstam 1 atbilstošo no d tabulas. Tā kā d tabula var būt vairāki atbilstoši ieraksti, tad otrajā piemērā parādīts, kā noteikti kārtību, kura noteiks kurus atbilstošos ierakstus ņemt.

Link to comment
Share on other sites

Ja pieliksi klāt LIMIT 1, tad pagaidu tabulā būs tikai 1 ieraksts. Joinojot to ar m tabulu, tu dabūsi labi, ja vienu ierakstu vispār. Bet vajadzīgs ir katras m tabulas ierakstam 1 atbilstošo no d tabulas.

 

Nez, prasīts ir "vajadzētu limitēt lai no konkrētās tabulas (m) izvelk tikai vienu ierakstu"

Link to comment
Share on other sites

Ej nu ej? :)

 

Pietam, tas nav subselects, bet derived table.

 

Nu fig viņ zin kas ir šitais tad:

 

SELECT ut . * FROM user_task

WHERE user_id IN ( SELECT id FROM user ORDER BY date_registered DESC LIMIT 10)

 

MySQL said: Documentation

#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

Link to comment
Share on other sites

Hmm, par šādu LIMIT prikolu nemaz nezināju. Bet tādas konstrukcijas arī nav nekad nācies izmantot - to jau var pārvērst par JOINu.

SELECT * FROM user_task
JOIN user ON user_task.user_id=user.id
ORDER BY date_registered DESC
LIMIT 10

 

Katrā ziņā parastos subselektos vai derived tabulās limit man stādā.

Edited by marrtins
Link to comment
Share on other sites

Briedis, tas kļūdas paziņojums visu diezgan labi izskaidro. :)

 

This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquer

 

Šim vaicājumam limit nestrādā tāpēc, ka to mēģini izmantot IN konstrukcijā. Pašam apakšvaicājumam kā tādam limits strādā, dažreiz pat to vajag obligāti. Vienkāršs piemērs:

 

select
   *
from
   web_section_names
where
   tree_id > (select id from web_sections where id > 7 limit 1)

 

Šajā gadījumā limit ir vajadzīgs, jo bez tā apakšvaicājums atgriezīs vairāk nekā vienu rindu.

Edited by Maris-S
Link to comment
Share on other sites

Briedis, tas kļūdas paziņojums visu diezgan labi izskaidro. :)

 

This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquer

 

Šim vaicājumam limit nestrādā tāpēc, ka to mēģini izmantot IN konstrukcijā. Pašam apakšvaicājumam kā tādam limits strādā, dažreiz pat to vajag obligāti. Vienkāršs piemērs:

 

select
   *
from
   web_section_names
where
   tree_id > (select id from web_sections where id > 7 limit 1)

 

Šajā gadījumā limit ir vajadzīgs, jo bez tā apakšvaicājums atgriezīs vairāk nekā vienu rindu.

 

Hmm, tev taisnība, es nebiju "tā" paskatījies uz šo ziņojumu. Bet anyway, visbiežāk tāpat jālieot IN() :(

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...