одиночный вместо двойного оператора выбора

0

первая таблица - bplus - имеет столбец с именем home01 со значениями, идентичными некоторым значениям в столбце fname табличных banners

$items = '';
$sql = "select home01 from bplus";
$st = $db->query($sql);
$arr = $st->fetchAll(PDO::FETCH_COLUMN);
foreach ($arr as $el){
    $el = trim($el);
    $sqlb = "select * from banners where fname = '" . $el . "'";
    $stb = $db->query($sqlb);
    $row = $stb->fetch();
    $items .= "<img class='itemtop' src = '../banners/" . $el . "' alt='img' data-id = " . $row['id'] . " data-fname = '" . $row['fname'] . ">\n"; 
}
echo $items;

это работает, но, вероятно, существует более короткий путь, с одним оператором select.

Любая помощь?

  • 0
    Да. Используйте WHERE fname in ($el1, $el2) (так же, как используя OR )
  • 0
    @Justinas, не могли бы вы написать всю строку, пожалуйста. Потому что количество el1 , el2 ... не el2 одинаково. Я не уверен, что ты думаешь.
Показать ещё 3 комментария
Теги:

1 ответ

1
Лучший ответ

использовать LEFT JOIN

select bplus.home01, banners.* from bplus left join banners on bplus.home01 = banners.fname;
  • 0
    bplus .id не banners.id на banners.id . Также мне нужны все значения столбцов из banners .
  • 0
    Вы можете поставить любое имя поля, которое принадлежит баннеру
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню