Autor Zpráva
michelloster
Profil
Zdarec.
Mám následující dotaz:

$cist1 = mysql_query("SELECT object_id FROM wp_term_relationships WHERE term_taxonomy_id='1' ORDER BY object_id DESC LIMIT 60");
while($data1 = mysql_fetch_array($cist1)) {
$final1 = mysql_query("SELECT ID, post_title FROM wp_posts WHERE ID='$data1[object_id]' AND post_status='publish' ORDER BY ID DESC LIMIT 6");
while($vypis1 = mysql_fetch_array($final1)) {
echo".....tady se to vypisuje....";
}
}


Jde o to, že potřebuji z jedné tabulky načíst hodnotu záznamů ve sloupci object_id, kde term_taxonomy_id je 1. V druhém dotazu potřebuji načíst z tabulky wp_posts hodnoty ve sloupcích ID, post_title u posledních 6-ti záznamů, kde se ID rovná object_id načteným v prvním dotazu.

Problém je v tom, že se nenačte jen těch posledních 6 záznamů jak potřebuji, ale všechny, který vyhovují tomu prvnímu dotazu. To bude nejspíš tím, že ten druhej dotaz se pořád opakuje a ten limit 6 se vztahuje jen k tomu druhému záznamu, takže v podstatě říká že se vybere maximálně 6 záznamů, kde ID= object_id z prvního dotazu a post_status=publish. Ovšem já potřebuji aby se celkově z toho druhého dotazu vybralo jen 6 záznamů a né aby se ten limit vztahoval jen ke každému object_id z načtenému z prvního řadku. Prostě aby z těchle dvou dotazů vylezlo dohromady max. 6 nejnovějších záznamů, o to mi jde.
Snad mi aspoň částečně rozumíte, nejsem moc dobrej na vysvětlování :). Každopádně tohle se celkem špatně vysvětluje.
Jo a ten limit 60 je tam jen proto, že pravděpodobně každej desátej záznam z toho prvního dotazu vyhovuje té podmínce term_taxonomy_id =1, takže nechci zbytečně zatěžovat databázi tím, že budu zbytečně všechno načítat.
Chápu, že celej ten dotaz je dost lajdácky napsanej a že třeba ten limit 60 je taky dost amaterskej, tak doufám, že vás napadne něco lepšího, jak to řešit. Předem díky.
Alphard
Profil
snad nějak takhle
$result = mysql_query ("select p.ID, p.post_title from wp_term_relationships t join wp_posts p on p.ID = t.object_id where p.post_status = 'publish' and t.term_taxonomy = '1' order by t.ID desc limit 6");
while ($line = mysql_fetch_array ($result))
{
// ...
}
michelloster
Profil
snad nějak takhle
$result = mysql_query ("select p.ID, p.post_title from wp_term_relationships t join wp_posts p on p.ID = t.object_id where p.post_status = 'publish' and t.term_taxonomy = '1' order by t.ID desc limit 6");
while ($line = mysql_fetch_array ($result))
{
// ...
}


Bohužel :(
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Ale i tak díky za snahu.
Nějaký jiný návrh?
Alphard
Profil
vypiště si chybu
echo mysql_error();
michelloster
Profil
Tak už to běží parádně. Chybka byla v tom, že místo term_taxonomy má být term_taxonomy_id a pak v tom order by t.ID má být nejspíš p.ID (to nevím jistě, ale když jsem to t vyměnil za p tak to fungovalo správně :))
Každopádně Ti, Alpharde, moc děkuji, ani nevíš, jak jsi mi pomohl :) Kdybys náhodou něco potřeboval, tak se určitě ozvi. :)
Toto téma je uzamčeno. Odpověď nelze zaslat.