помогите с запросом

snark

Новичок
помогите с запросом

Есть вот такая схемка:

$qres = $cSQL->query("SELECT category.*, demand_1.title as dem_title,category_priv_3.id as t36_3_id,category_priv_3.user as user
FROM category
left join demand as demand_1 on (category.id=demand_1.cat)
left join category_priv as category_priv_3 on (category.id=category_priv_3.cat)
where category.idt='2' and category.idmd='0'");

echo $find = $cSQL->num_rows($qres);


Можно ли получать кол-во записей другим способом, более оптимизированным? Так как таблицы все большие и выделяется масса памяти... просто ума не приложу, как сделать это посредством COUNT()...

Спасибо!
 

zerkms

TDD infected
Команда форума
snark
если ты хочешь ответа на вопрос - то задай свой вопрос словами.
если хочешь оффтопа в своих тредах - так и продолжай постить хз что и просить это всё оптимизировать
 

snark

Новичок
Прошу прощения, если непонятно выразил свои мысли - поздно уже... )

Я хотел спросить следующие, допустим, для того, чтобы узнать количество рядов в таблице без объеденений я всегда использую для этого COUNT(*), например:

$qres = mysql_query("select count(*) from table where idm=12")
$count = mysql_result($qres, 0);

ну так вот, а я хотел спросить можно ли таким же образом считать кол-во строк в запросе, в котором используется left join??? Сейчас я получаю кол-во в этом случае функцией mysql_num_rows, но на мой взгляд это очень криво... может есть другие, более удобные методы, где бы база не возвращала огромный массив, а только кол-во полученых записей?

Еще раз спасибо...
 

zerkms

TDD infected
Команда форума
COUNT(*) работает абсолютно одинаково как в случае с джоином, так и без.
 

snark

Новичок
Блин, не, что-то не то... ( или опять я туплю...

Вот запрос:

$q_ok = "SELECT count(areas.id) FROM areas left join category as category_6 on (areas.id=category_6.area) where areas.idmd='0'";
$qres_writes = $cSQL->query($q_ok, false);
$find_writes = $cSQL->result($qres_writes, 0);

в таблице areas реально 3 записи, в category 17, а значение в $find_writes порлучается 10 ... что за нафиг? (

Помогите...
 

BRat

o_0
snark
а чем тебе помочь? рассказать, что у тебя вероятно отношение areas.id=category_6.area это отношение один ко многим? Ты бы определился количество чего тебе нужно определить, и в соответсвии с этим свой запрос строил
 

snark

Новичок
Да, запрос действительно некорректен, добавлю условие where:

$q_ok = "SELECT count(areas.id) FROM areas left join category as category_6 on (areas.id=category_6.area) where areas.idmd='0' and category_6.user = 10 ";

думаю сейчас запрос более понятен...

нужно посчитать количество разделов, с условием где id раздела равен id категории в которой поле user равно десяти...
 

BRat

o_0
snark
не, так не пойдёт - абстрагируйся от БД, проговори вслух нормальными человеческими понятиями, что ты хочешь найти - "Хочу найти количество квартир, где живет 10 человек". Вроде такого. Потом посмотри на свои таблицы и подумай как бы ты сам стал в них искать это. Затем переноси на запрос
 
Сверху