Возможно ли оптимизировать такой sql-запрос?

12
N
На сайте с 14.06.2004
Offline
107
912

Есть 2 таблицы приблизительно с такой структурой

news

id date_in ...... - вобщем здесь индексная информация Например:

1 2009-03-18 ...

content - описывается сам контент в базе

content_id lng type_rec parent_id content

1 ru news_title 1 "Заголовок новсти"

2 ru news_text 1 "Текст новости"

и таких записей много (кейворды, дескирипшионы и т.д.)

Можно ли как-то выбрать информацию из этих 2 таблиц одним запросом?

Вот сейчас нужно так приблизительно:

sql="select content from content where type_rex='news_title' and parent_id='1'"; - заголовок

sql="select content from content where type_rex='news_text' and parent_id='1'"; - текст

и таких запросов у меня получается около 10

Можно ли как-то сделать это все одним запросом?

kil
На сайте с 03.04.2006
Offline
84
kil
#1

Может быть вот так:

select content from content where parent_id='1'

Одним запросом получишь 10 строк :)

kil добавил 18.03.2009 в 12:07

Только я не понял по поводу второй таблицы.

N
На сайте с 14.06.2004
Offline
107
#2

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

Например

parent_id 1, type_rex='news_title' - заголовок новости

parent_id 1 type_rex='title_kategory' - название рубрики каталога

Запись идентифицируется еще по полю type_rex

kil
На сайте с 03.04.2006
Offline
84
kil
#3
Nicca:
Так наверное не получится т.к. parent_id может быть одинаковым у разных полей (В эту таблицу сбрасывается контент со всего сайта)
Например
parent_id 1, type_rex='news_title' - заголовок новости
parent_id 1 type_rex='title_kategory' - название рубрики каталога
Запись идентифицируется еще по полю type_rex

Я так понял, что тебе надо выбрать записи для одного и того же parent_id на с разными type_rex?

N
На сайте с 14.06.2004
Offline
107
#4
kil:
Я так понял, что тебе надо выбрать записи для одного и того же parent_id на с разными type_rex?

ДА. Чтобі не писать 10 запросов а попробовать одним..

J
На сайте с 02.02.2009
Offline
53
#5

В случае если сделать type_rex - ENUM (для оптимизации, конечн, запрос можно и просто так делать)

SELECT content FROM content WHERE type_rex IN ('news_title','news_text') AND parent_id=1

kil
На сайте с 03.04.2006
Offline
84
kil
#6
Nicca:
ДА. Чтобі не писать 10 запросов а попробовать одним..

Тогда в чем проблема?

То, что я предложил, подходит имхо :)

N
На сайте с 14.06.2004
Offline
107
#7

А как тогда принимать данные. Вот в обычном варианте я делаю так:


$sql="select from table";
$res=db_Select($sql);
while($row=mysql_fetch_array($res))
{
$title=$row['title'];
$text=$row['text'];
}

Тоесть по именам полей.

А как в

SELECT content FROM content WHERE type_rex IN ('news_title','news_text') AND parent_id=1

принимать данные. Чтобы знать что например я в цикле на текущей итерации получаю type_rex=news_title, а на следующей type_rex='news_text'

D
На сайте с 04.03.2009
Offline
32
#8

Если я правильно понял структуру таблицы и как хранятся данные то так:

if($row[type_rex] == 'news_title') $title = $row[content];

elseif($row[type_rex] == 'news_text') $title = $row[content];

.

.

.

Dreammaker
На сайте с 20.04.2006
Offline
569
#9
Nicca:
Чтобы знать что например я в цикле на текущей итерации получаю type_rex=news_title, а на следующей type_rex='news_text'

не совсем понятно, но

SELECT content, type_rex FROM content WHERE type_rex IN ('news_title','news_text') AND parent_id=1

?

N
На сайте с 14.06.2004
Offline
107
#10
Dreammaker:
не совсем понятно, но


SELECT content, type_rex FROM content WHERE type_rex IN ('news_title','news_text') AND parent_id=1

?

да, Юименно так

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий