Делаю вывод из БД.
Хотелось обойтись без второго if, например что-то вроде:
Как это возможно сделать?
UPD
$all_countries = $mysqli->query("SELECT * FROM `onetravel_countries` ORDER BY `id` LIMIT 0, 10");
if ($all_countries) while ($country = $all_countries->fetch_assoc()) {
$amt = $mysqli->query("SELECT COUNT(*) FROM `estate_base` WHERE `country_id` = '$country[descr]' AND `useit` <> '0'"); $amt = $amt->fetch_row();
if ( $amt['0'] > 0 ) { ... }
}
Пусть у нас есть table_1 с колонкой id, и table_2 с колонкой country_id. Получим только те записи из table_1, для которых есть соответствующая запись в таблице table_2:
SELECT `table_1`.* FROM `table_1` JOIN `table_2`
ON `table_2`.`country_id` = `table_1`.`id`
Если во второй таблице может быть несколько записей для одной из первой, то нужно дополнить запрос так:
SELECT `table_1`.* FROM `table_1` JOIN `table_2`
ON `table_2`.`country_id` = `table_1`.`id`
GROUP BY `table_1`.`id`
Так выведутся записи из первой таблицы без дублирования.
Добавление счётчика записей во второй таблице тоже проблем не представляет:
SELECT `table_1`.*, COUNT(*) as `cnt` FROM `table_1` JOIN `table_2`
ON `table_2`.`country_id` = `table_1`.`id`
GROUP BY `table_1`.`id`
Раздел в руководстве.
SELECT COALESCE(COUNT(t2.*), 0) cnt, t1.id, t1.field1, t1.field2 /* , ... */
FROM table_1 t1
LEFT JOIN table_2 t2 ON t2.country_id = t1.id
GROUP BY t1.id /* , t1.field1, t1.field2, ... */
ORDER BY t1.id LIMIT 0, 10
Сборка персонального компьютера от Artline: умный выбор для современных пользователей