[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вывод из базы данных
maxsim1982i
Всем доброго дня. Есть проблема при выводе данных одним запросом из двух таблиц. либо чето напутал либо так долго идет запрос вобщем браузер мин на 2 подвисает код

for ($i=5; $i>=1; $i-1)
{
$sql="SELECT * FROM `$table`,`$table_d` where `$table_d`.`city`='$gorod' and `table_d`.`vid` ='$vid' and `$table`.`zvezda`='$i'";

if ($res=mysql_query($sql))
{
while ($sr=mysql_fetch_array($res))
{
echo "<tr><td width=900>Название: ".$sr['name']."</td></tr>";
}///while
}///if
}///for


причем сразу скажу что в таблице $table в поле `zvezda` может быть значение null



Спустя 3 минуты, 38 секунд (27.01.2010 - 08:59) Guest написал(а):
UNION для объединения таблиц, если у них одинаковые колонки.
Хотя зачем в цикле делать обращение к базе данных? Чтоб одна и та же информация по 5 раз выводилась?! smile.gif

Спустя 4 минуты, 25 секунд (27.01.2010 - 09:03) maxsim1982i написал(а):
а если не одинаковые колонки в таблицах?

Спустя 1 час, 11 минут, 24 секунды (27.01.2010 - 10:14) Ice написал(а):
for ($i=5; $i>=1; $i-1)

// $i -- - это не $i - 1</span>


Задумайтесь над этим.

Вы так задумали, что в звёздах, судя по всему, отеля, может быть NULL?

Запрос можно было осуществить быстрее, то есть без цикла и без повторения ненужных запросов. Дело в том, что мускуль работает не как РНР: РНР пробегается тупо по коду, везде, где видит свои теги, думает:"Во, а вт это - мое. И обрабатывает", а мускуль, сначала анализирует весь запрос, а потом уже его выполняет.

Затем..: зачем выбирать все поля таблицы, если вам нужно только одно название на вывод? Ещё один неуместный оператор - звёздочка, уменьшающий быстродействие.

Спустя 9 минут, 4 секунды (27.01.2010 - 10:23) maxsim1982i написал(а):
А как в запросе поставить условие что `zvezda` может иметь значение от 0 до 5

Спустя 1 минута, 9 секунд (27.01.2010 - 10:25) Ice написал(а):
$sql="SELECT `name` FROM `$table`,`$table_d`
WHERE `$table_d`.`city`='$gorod'
AND `table_d`.`vid` ='$vid'
AND `$table`.`zvezda` IN('0','1','2','3','4','5')"
;

Спустя 1 минута, 52 секунды (27.01.2010 - 10:26) Winston написал(а):
Попробуй так:

$sql="SELECT * FROM `$table`,`$table_d` where `$table_d`.`city`='$gorod' and `$table_d`.`vid` ='$vid'";
$res = mysql_query($sql);

while ($sr=mysql_fetch_assoc($res))
{
echo "<tr><td width=900>Название: ".$sr['name']."</td></tr>";
}

Спустя 1 минута, 19 секунд (27.01.2010 - 10:28) maxsim1982i написал(а):
А $i будет брать значения из цикла for ($i=0; $i>0; $i=$i-1)

Спустя 2 минуты, 33 секунды (27.01.2010 - 10:30) maxsim1982i написал(а):
IN('0','1','2','3','4','5')
вот так она будет в какой последовательности выбирать начиная с нуля или порядка не существует
мне нужен порядок что сначала 5 потом 4 и в конце nul

Спустя 2 минуты, 19 секунд (27.01.2010 - 10:33) Ice написал(а):
Цитата (maxsim1982i @ 27.01.2010 - 07:28)
А $i будет брать значения из цикла for ($i=0; $i>0; $i=$i-1)

Запомните на будущее, что SQL - хоть это и язык запросов, но он тоже весьма и весьма мощен. Все, что можно сделать в базе, пусть делается в базе. А в ней можно достаточно многое сделать, а не просто использовать всю мощь MySQL в качестве ведра, для хранения данных.

Спустя 3 минуты, 29 секунд (27.01.2010 - 10:36) Ice написал(а):
Цитата (maxsim1982i @ 27.01.2010 - 07:30)
IN('0','1','2','3','4','5')
вот так она будет в какой последовательности выбирать начиная с нуля или порядка не существует
мне нужен порядок что сначала 5 потом 4 и в конце nul

Почему не существует? Существует и еще какой=))) Кто вам мешает отсортировать по полю со звёздами?=)



$sql="SELECT `name` FROM `$table`,`$table_d`
WHERE `$table_d`.`city`='$gorod'
AND `table_d`.`vid` ='$vid'
AND `$table`.`zvezda` IN('0','1','2','3','4','5')
ORDER BY `$table`.`zvezda` ASC"
;


ASC и DESC - флаги сортировки.

Upd.: Ваши таблицы имеют поля с первичными ключами или нет?

Спустя 2 минуты, 32 секунды (27.01.2010 - 10:39) maxsim1982i написал(а):
Ice
Спасибо всё понил. Тема закрыта. biggrin.gif

Спустя 1 час, 45 минут, 59 секунд (27.01.2010 - 12:25) Gabriel написал(а):
Ice
а разве нельзя воспользоварся between?

Спустя 1 час, 2 минуты, 22 секунды (27.01.2010 - 13:27) Ice написал(а):
Цитата (Gabriel @ 27.01.2010 - 09:25)
Ice
а разве нельзя воспользоварся between?

Можно конечно! Вот и вправду=)


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.