Подскажите с запросов к базе в php

C
На сайте с 16.04.2009
Offline
7
400

Что выведет этот запрос посмотрите здесь http://bloodtar.ru ниже надписи "Последние посты( в разрабоке)"

Как видите, не у всех постов есть значение post_title, поэтому отображаются пустые поля. Что указать в where, чтоб отображались только не пустые поля? есть вообще такое?

function view_lposts($params)

{

global $DB;

$res = mysql_query("SELECT post_title, post_creator_user_ID, post_ID, post_status

FROM evo_items__item

WHERE post_status = 'published' and post_title is not NULL

ORDER BY evo_items__item.post_datecreated DESC

LIMIT 0 , 20");

echo $params['block_title_start'];

echo $params['block_title_end'];

echo '<ul>';

while ($row = mysql_fetch_object($res)) {

$resu = mysql_query("SELECT blog_ID

FROM evo_blogs

WHERE blog_owner_user_ID = $row->post_creator_user_ID");

while ($rowa = mysql_fetch_object($resu)) {

echo '<li><a href="http://bloodtar.ru?blog='.$rowa->blog_ID.'&p='.$row->post_ID.'" >'.$row->post_title.'</a></li>';}}

echo '</ul>';

мир вам и счастье
[Удален]
#1

гуглим на тему Left Join

C
На сайте с 16.04.2009
Offline
7
#2
neolord:
гуглим на тему Left Join

Используйте операцию LEFT JOIN для создания левого внешнего объединения, при котором все записи из первой (левой) таблицы включаются в динамический набор, даже если во второй (правой) таблице нет соответствующих им записей. - по-моему это не про меня...

[Удален]
#3

По-моему вы просто не поняли что к чему. С помощью джойна можно объединить ваш аццкий код в один запрос, и как раз либо пропустить отсутствующие соответствия, либо наоборот их включить.

Дело осложняется только LIMIT 20, это придется вынести из sql на уровень php

C
На сайте с 16.04.2009
Offline
7
#4

neolord, с объединением что-то не понял, а проблему решил так:

function view_lposts($params)

{

global $DB;

$res = mysql_query("SELECT post_title, post_creator_user_ID, post_ID

FROM evo_items__item

WHERE post_status = 'published'

ORDER BY evo_items__item.post_datecreated DESC

LIMIT 0 , 20");

echo $params['block_title_start'];

echo $params['block_title_end'];

echo '<ul>';

$h=0;

while ($row = mysql_fetch_object($res) and $h<10) {

if($row->post_title){

$resu = mysql_query("SELECT blog_ID

FROM evo_blogs

WHERE blog_owner_user_ID = $row->post_creator_user_ID

LIMIT 0,1");

while ($rowa = mysql_fetch_object($resu)) {

echo '<li><a href="http://bloodtar.ru?blog='.$rowa->blog_ID.'&p='.$row->post_ID.'" >'.$row->post_title.'</a></li>'; $h=$h+1;}}}

echo '</ul>';

}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий