Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте уважаемые форумчане! Никак не могу справиться со своей задачей!
Имеется таблица bronirovanie, в которой есть столбец id_hot_num. Нужно из id_hot_num выбрать значение, которое встречается чаще всего.
Помогите пожалуйста разобраться.
Неактивен
Неактивен
Спасибо огромное!!!!!!!!!!!!!!!! Заработало! и
Неактивен
Появился другой вопрос. Почему у меня не работает запрос такого вида:
"SELECT name_city FROM city WHERE id IN (SELECT id_city FROM hotel WHERE id IN (SELECT id_hotel FROM hotel_number WHERE id IN (SELECT id_hot_num FROM bronirovanie WHERE id_hot_num = '$id_hot_num')))"
Выдаёт следующую ошибку:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in
Неактивен
bronirovanie WHERE id_hot_num = '".$id_hot_num."')))"
Неактивен
Уважаемый vasya! Тысяча извинений, я не тот код привел вам!
Вот этот не правильно работает:
"SELECT name_city FROM city WHERE id IN (SELECT id_city FROM hotel WHERE id IN (SELECT id_hotel FROM hotel_number WHERE id IN (SELECT id_hot_num, count(*) c FROM bronirovanie GROUP BY id_hot_num ORDER BY c DESC LIMIT 1)))"
А ошибку выдает ту же самую.
Неактивен
Ошибка в последнем подзапросе. Рекомендую обрабатывать ошибки, чтобы не гадать
$sql="ваш запрос"
$res=mysql_query($sql) or die(mysql_error());
Неактивен
Вот такая ошибка:
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Скажите, а можно по другому оптимизировать данный запрос, чтобы он правильно сработал?
Неактивен
Спасибо за обработку ошибок!
Неактивен
Работает вот таким способом, с помощью 2-ух выборок:
$result_count = mysql_query("SELECT id_hot_num, count(*) c FROM bronirovanie GROUP BY id_hot_num ORDER BY c DESC LIMIT 2",$db);
$myrow_count = mysql_fetch_array($result_count);
$id_hot_num = $myrow_count['id_hot_num'];
$sql="SELECT name_city FROM city WHERE id IN (SELECT id_city FROM hotel WHERE id IN (SELECT id_hotel FROM hotel_number WHERE id IN (SELECT id_hot_num FROM bronirovanie WHERE id_hot_num = '$id_hot_num')))";
$res=mysql_query($sql,$db) or die(mysql_error());
$myrow_city = mysql_fetch_array($res);
Меня очень интересует, как такого вида запрос будет влиять на скорость выборки и загруженности сервера? Если можете, объясните пожалуйста!
Неактивен
Ну, при правильной расстановке индексов особых бед не должно быть.
Если вдруг MySQL решит выполнять подзапрос для каждой записи - можно будет переписать через JOIN или разбить на отдельные запросы.
Неактивен
userbanderas написал:
$result_count = mysql_query("SELECT id_hot_num, count(*) c FROM bronirovanie GROUP BY id_hot_num ORDER BY c DESC LIMIT 2",$db);
А зачем вам limit 2 и count(*) в списке выбираемых полей?
SELECT id_hot_num, FROM bronirovanie GROUP BY id_hot_num ORDER BY count(*) DESC LIMIT 1;
Неактивен