Запрос SQL

FlaMen

Новичок
Запрос SQL

Возможно этот вопрос уже задавался...

Есть таблица: tbl_cat
PHP:
c_id  |c_lv | c_name     |  c_see     |
======|=====|============|============|
1     | 0   |Главная     |   system   |
2     | 0   | MySQL      |    mysql   |
3     | 0   | Perl1      |    perl    |
4     | 0   | C++        |    c       |
5     | 0   | Delphi     |    delphi  |
6     | 2   | Статьи     |     staty  |
7     | 2   | Скачать    |    wodnl   |
8     | 2   | Книги      |    book    |
9     | 1   | ТОП        |    to      |
12    | 5   | Статьи     |     staty  |
26    | 3   | Исходники  |     sourse |
=======================================
Можно ли составить один SQL запрос на следуйщие действия:

В функции даны два значения c_see каталога и c_see подкаталога,

$cat = "mysql";
$podcat = "staty";

function out_cat($cat, $podcat)
{
Нужно получить c_id from tbl_cat where c_lv = '0' and c_see = '$cat'
полученный c_id вставить в запрос from tbl_cat where c_lv ='c_id' and c_see='$podcat'

}

________________________________________
или же готовый скрипт
function out_ipodcat($cat, $podcat)
{
$this->sql_query="select * from tbl_cat where c_see='$cat'";
$this->sql_execute();
$id_cat = mysql_fetch_array($this->sql_res);
$this->sql_query="select * from tbl_cat where c_lv='$id_cat[c_id]' && c_see = '$podcat'";
$this->sql_execute();
return(mysql_fetch_array($this->sql_res));
}
_________________________________________



Возможно ли это организовать одним запросом?
 

Falc

Новичок
SELECT t1.*
FROM tbl_cat t1
JOIN tbl_cat t2 ON t2.c_id = t1.c_lv
WHERE t2.c_see = '$cat' AND t1.c_see = '$podcat'

Примерно так.
 

FlaMen

Новичок
Falc что то не работает, видимо забыл гдето пару запятых или еще чаго, гляньте что там не так... =)
 

fixxxer

К.О.
Партнер клуба
FlaMen
Может, тебе еще и подгузники сменить?

Запрос Falc'а логически и синтаксически правильный. Где у тебя не совпадают названия полей или еще чего, это уж, пожалуйста, ищи сам.
 

FlaMen

Новичок
А что если сделать так? это правильно... ?

PHP:
SELECT *
FROM tbl_cat as t1 , tbl_cat as t2
WHERE  t1.c_see='$podcat' AND t2.c_see = '$cat'  AND t1.c_lv=t2.c_id
Так я и с предыдущим примером и не разобрался...
 

fixxxer

К.О.
Партнер клуба
А попробовать?

Hint: напиши запрос ручками, в консоли, и посмотри на что ругнется. или выведи mysql_error().
 

FlaMen

Новичок
fixxxer Ну так я попробовал , все реал работает...

Я просто спрашиваю с точки зрения компактности правильно ли он написан.
 

Falc

Новичок
FlaMen
Если ты свой запрос оформляешь в виде джойнов с условиями, то такой запрос выглядет гораздо нагляднее, особено если ты будешь джойнить с десяток таблиц.
 

chira

Новичок
FlaMen
что вернет твой запрос , если у каталога не будет подкаталога?
если тебя результат устроит, то все нормально ...
 
Сверху