Вывод из базы в 1 запрос mysql

kvins
На сайте с 23.08.2011
Offline
95
515

Что то не хочется подключатся 2 раза к БД вот и заинтересовало , можно ли к такому коду

mysql_query("SELECT * FROM portfolio WHERE seourl='$myurl'"); (выдаст только 1 элемент)

Сделать так чтобы кроме этого элемента еще выдало , предыдущую и следующую после него.

Магазин уникальных статей. (http://linkum.ru/to/13254/)
C
На сайте с 04.02.2005
Offline
291
#1

union

но, что такое в этом селекте предыдущий, и следующий? Где критерий

и...

вам не нужно делать второго(третьего) подключения к базе. Вам нужен второй, третий запрос

Оптимизайка
На сайте с 11.03.2012
Offline
396
#2

В базах данных нет понятия "следующий" и "предыдущий" элемент. Они оперируют понятием множеств. Вы хотите расширить множество выбираемых элементов, следовательно нужно расширить условие.

Допустим, если в таблице portfolio есть столбец id, который содержит порядковый номер строки, тогда можно ориентироваться на него, чтобы получить нужный вам результат. Для этого нужно выбрать множество элементов по seourl который вам нужен и соединить его с множеством элементов по id, которые будут обеспечивать второе необходимое вам условие ("следующую или предыдущую"), что в переводе на язык SQL будет выглядеть как то так:

select p.*, p1.*, p2.* from portfolio p

left join portfolio p1 on (p1.id = p.id - 1)

left join portfolio p2 on (p2.id = p.id + 1)

where p.seourl='$myurl'

В таком случае, если id идут по порядку, без пропусков, вы получите искомые данные в одной строке. Если же id идут не по порядку, то вам придётся выполнить три отдельных запроса:

SELECT * FROM portfolio WHERE seourl='$myurl'

потом

SELECT * FROM portfolio WHERE id < $id order by id desc limit 0,1

и

SELECT * FROM portfolio WHERE id > $id order by id asc limit 0,1

где $id - это полученный идентификатор строки из первого вашего запроса.

P.S. Нельзя в запрос подставлять переменные php, как вы делаете. Это потенциальная уязвимость SQL injection.

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!

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