Как одним запросом вытащить из БД несколько полей, с разными условиями?

Spear

почемучка
Как одним запросом вытащить из БД несколько полей, с разными условиями?

Здравствуйте, у меня такая проблема:
пытаюсь вытащить из БД с помощью одного запроса названия всех разделов, у которых (в ряду) айдишники равны 1, 2 и 3.
Вот какой код:

PHP:
$SameTitles = explode(",", $related2);
$related2 - это перечень номеров рядов, названия которых нужно взять. Выводится в виде:
$related2 = 1,2,3;

PHP:
    $sg = count($SameTitles );
    $sgNull = "0";
    while ($sgNull < $sg) {
    $cat .= ( $SameTitles[$sgNull] ) ? " or id='".$SameTitles [$sgNull]."'" : "";
    $sgNull++;
    }
получается:

$cat = or id='1' or id='2' or id='3';

А дальше - запара. Незнаю как одним запросом собрать все названия с условием $cat. В том варианте что сейчас - выводится только одно.
(where active='1' - проверка на включенность вообще той фирмы в список)
PHP:
$SameData = $db->sql_query("SELECT title  FROM table where active='1'$cat");
    $SameDataRow = $db->sql_fetchrow($SameData);
    $related .= $SameDataRow['title'];
Подскажите, пожалуйста, как мне сделать чтобы $related было перечнем всех выбранных данных? Можно в массив, да и вообще - как угодно, лишь бы работало в один запрос. Потому что делать просто для каждого варианта + 1 запрос то что будет когда в этом списке их будет штук 30? :)
 

Spear

почемучка
переменная - $related2 = 1,2
код
PHP:
$SameData = $db->sql_query("SELECT title  FROM table where active='1' and id IN($related2)");
    $SameDataRow = $db->sql_fetchrow($SameData);
    $related .= $SameDataRow['title'];
Но всеравно выводится только одно значение в $related а не два... помогите пожалуйста.
 

impossible

Новичок
PHP:
$SameData = $db->sql_query("SELECT title  FROM table where active='1' and id IN ($related2)"); 
while ($SameDataRow = $db->sql_fetchrow($SameData)) {
  $related .= $SameDataRow['title'].'<br>';
}
соединил то, что писал fixxxer
 

Spear

почемучка
Всем спасибо, заработало.. теперь такая проблема (очень прошу - помогите):

мне нужно каким-то образом разделить данные в строке $test запятыми. Что ни делаю - неполучается. Сама строка формируется подобным запросом (выше). Можно конечно добавить к ней в конце ",", но тогда некрасиво смотятся строки только с одним названием (нарпимер - "Ubisoft," - запятая не к месту).
Опятб же - можно сделать так что если всего одно значение - то запятую ставить не будут.. но, блин, опять же - смотрится плохо запятая и после последнего слова:
Ubisoft, GSC,
Может быть есть какие-то идеи как можно разделить слова запятыми?

-~{}~ 28.05.05 00:22:

вот! Я додумался. Правда способ глуповат. Сейчас покажу. Оцените пожалуйста ход мысли )
 

Денч

Новичок
Это имеешь в виду?
PHP:
$related .= $SameDataRow['title'].",";
Собрать строку, проверить последний символ, если зпт, удалить...
Надеюсь, правильно понял, что требовалось...
 

Spear

почемучка
Денч
дело в том что я незнаю как проверить последний символ.. поэтому пока что сделал так.. Хотя проще все-таки вашим способом. Буду рад если покажете как.
а вот пока что моё решение:

PHP:
$SameData = $db->sql_query("SELECT title, id  FROM table  where active='1' and id IN($related2)");
    while ($SameDataRow = $db->sql_fetchrow($SameData)){
    $relatedTitle = $SameDataRow['title'];
    $relatedId = $SameDataRow['id'];
    $related .= "%<a href='/companies/$relatedId'>$relatedTitle</a>%";
    }
    $related = str_replace("%%", ", ", $related);
    $related = str_replace("%", "", $related);
таким образом:
сначала каждый результат "ограждаем" знаком процента.
Таким образом ДВА процента рядом могут получиться только там, где заканчивается один результат и начинается второй. В эотм случае заменяем два процента запятой с пробелом.
Далее - если где-то остались знаки процента (начало первого и конец второго результатов - kill 'em.

ну как, смешно? Зато работает ;)

-~{}~ 28.05.05 03:51:

Все, уже разобрался с последними символами, сделал вообще конфетку ;) Спасибо Денчу за наводку ;)
 

tashkentchi

Новичок
PHP:
$related = '';
while ($SameDataRow = $db->sql_fetchrow($SameData)) {
   if ( ! $related  ) $related = $SameDataRow['title'];
   else $related .= ','.$SameDataRow['title'];
}
 
Сверху