Optymalizacja zapytań

0

Witam,

mam tabelę:

articles:
+art_id
+cat_id
+date

Czy mogę w jednym zapytaniu wyciągnąć ostatnie 4 artykuły z 4 kategorii które znam?

Wiem że mogę to zrobić w 4 zapytaniach:
select * from articles where cat_id=? order by data limit 4
ale 3 dodatkowe zapytania nie bardzo mnie zadowalają.

0
select * from articles where cat_id in (cat1, cat2, cat3, cat4) order by data limit 4
0

Chodzi mi o to aby pobrać po 4 ostatnie artykuły z każdej kategorii - czyli razem 16 artykułów a nie 4...

0

Można to rozwiązać tak, ale nie wiem czy to najlepszy sposób:

select * from articles where cat_id=cat1 order by data limit 4 union
select * from articles where cat_id=cat2 order by data limit 4 union
select * from articles where cat_id=cat3 order by data limit 4 union
select * from articles where cat_id=cat4 order by data limit 4;
0

No można... pisałem o 4 zapytaniach bez union w pierwszym poście ale to chcąc niechcąc i tak 4 zapytania:/ :(

0

Teraz mi przyszło do głowy:

select * from articles where (cat_id=cat1) or (cat_id=cat2) or (cat_id=cat3) or (cat_id=cat4) order by data,cat limit 16

Nie wiem czy zadziała, ale można spróbować

0

nie zadziała.
Zrób tego uniona. Dlaczego za wszelką cenę chcesz mieć jedno zapytanie. Nie zawsze jedno zadziała szybciej niż 4.

1 użytkowników online, w tym zalogowanych: 0, gości: 1