Получение записи по ссылке

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

Получение записи по ссылке

Непрочитанное сообщение BlackCat » 2008-04-13 20:37:01

Столкнулся с интересной задачей.
Есть вот такая таблица (называется variants):

Код: Выделить всё

+----+------+------------+------------------------+
| id | link |    title   |           text         |
+----+------+------------+------------------------+
|  1 |   1  | Название 1 |        Текст 1         |
|  2 |   2  | Название 2 |        Текст 2         |
|  3 |   3  | Название 3 |        Текст 3         |
|  4 |   0  |            | Дополнительный Текст 1 |
|  5 |   0  |            | Дополнительный Текст 2 |
|  6 |   0  |            | Дополнительный Текст 3 |
+----+------+------------+------------------------+
Где поле link записи ссылается на id записи в той же таблице. Задача: Есть id записи (для этой записи link<>0), получить значение поля text записи, на которую ссылается запись с известным id.
На скорую руку сделал два запроса:
1. получает поле link;
2. получает сам текст.
Немного покурив ман пришел к вот такому запросу:

Код: Выделить всё

SELECT t1.text FROM variants AS t1 LEFT JOIN variants AS t2 ON t1.id=t2.link WHERE t2.id=(Известный id);
Можно упростить эту конструкцию, убрав LEFT JOIN:

Код: Выделить всё

SELECT t1.text FROM variants AS t1, variants AS t2 WHERE t1.id=t2.link AND t2.id=(Известный id);
Можно ли как-то еще решить задачу? Условие не изменять - так удобнее хранить и добавлять данные.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Получение записи по ссылке

Непрочитанное сообщение ProFTP » 2008-04-13 20:42:25

сложно понять вообщето

если ссылаеться, то тут наверное как получиться

может примерно таким синтаксисом

Код: Выделить всё

SELECT t1.user,
                                    t1.host,
                                    t1.ip,
                                    t1.forwarded,
                                    t2.name
                             FROM session AS t1,
                                 users AS t2
                             WHERE t1.session = \''.$cookies{'session'}.'\' AND
                                 t1.user = t2.id
                             LIMIT 1'
тут только 2 таблицы
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение