запрос к mysql в цикле

iigor

Новичок
запрос к mysql в цикле

Делаю 2 запроса в на подобие этого:

$obj0 = new class_mysql(); //стандартные функции
$obj0->sql_connect();
$obj1 = new class_mysql();
$obj1->sql_connect();

$obj0->sql_query="Select * from xxx where id<5000";
$obj0->sql_execute();
while($row1 = mysql_fetch_object($obj0->sql_res))
{
Echo $row1->id;
//под запрос
$obj1->sql_query="Select * from yyy where xxx_id=$row1->id";
$obj1->sql_execute(); //вот здесь затыкаеться
while($row2 = mysql_fetch_object($obj1->sql_res))
{
Echo $row2->name; //отправим
}
}
echo '!!!!!!конец!!!!!!';

Затыкается по разному то на 4000 то на 3800 ой записи. Не знаю в чём дело. Что-ли mysql глючит. (id поле обязательное).
 

iigor

Новичок
в нутри класса использую:

$this->sql_res = mysql_query($this->sql_query,$this->conn_id) or die("SQL Запрос не выполнился!");

он ничего не выводит и не до ходит до значения "!!!!!!конец!!!!!!" скрипт просто как бы обрываеться. При малом количестве записей нормально. Под записей примерно у меня по 10 на каждую. (это работа с графическими обьектами).

-~{}~ 08.01.06 21:24:

В первой у меня 49772 во второй 207944 записей.

-~{}~ 08.01.06 21:53:

Вот стало лудше работать когда создал индекс по полю понимаю еслиб медленней работало, но чтобы затыкаться!

-~{}~ 08.01.06 22:16:

В цикле выбирает свего 33262 когда я задал 40000 записей.
 

alpine

Новичок
iigor
Ну дык добавь памяти на серваке :D
А если серьезно зачем тебе все записи и сразу выбирать еще и так криво?!
 

Dreammaker

***=Ф=***
и действительно почему бы не выбирать запросом типа..

SELECT xxx.id, yyy.name FROM xxx, yyy WHERE xxx.id<5000 AND yyy.xxx_id=xxx.id

? Таким образом от лишних запросов избаляемся...

В принципе, если строится дерево, то тут оно не сложное, можно и средствами пхп вывод организовать (это если смущает, что в строчки будут попадать и id и name, и при этом не будет отдельных строчек с id).

Хотя вопрос, конечно в том, зачем вынимать сразу много строчек. Может пересмотреть подход и можно будет делать как-то попроще?

Опиши, плиз, задачу, может сообща и придумаем более элегантное решение...
 

iigor

Новичок
У меня в первой таблице графический объект со множеством свойств. А во второй точки к этому объекту. Я строю бинарный фаил и отправляю клиенту. В формате (количество объектов, свойства обьекта...,количество точек, точки...). Да можно было оформить это в 1 запрос но потом в php попробовать это "распознать". Для построения необходимо узнать количество всех объектов если в 1м запросе то сейчас их столько же сколько и точек. Как мне это узнать. Условие у моего запроса довольно сложное с областями связанное так что повторять запрос не охото. (для подсчета точек для я их при пробегании по результату до смены id граф объекта ложу в массив потом отправляю количество затем все сохранённые точки)

-~{}~ 09.01.06 00:25:

На счёт количества обьектов у меня только одно на уме предварительно пробежаться по набору и подсчитать сколько раз id обьекта сменил своё значение.

-~{}~ 09.01.06 00:26:

Жалко только что при таком запросе каждая координата x y будет дополненна порядка 10 свойств самого обьекта.

-~{}~ 09.01.06 00:43:

Мне нужна временная таблица. В мускуле скорей всего этого нет.
 

Dreammaker

***=Ф=***
SELECT COUNT(*) FROM xxx WHERE id<5000

В мускуле есть временные таблицы. можно посмотреть в мане..

Дальше ещё подумаю, если будет время :)
 
Сверху