Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: помогите с запросом
 
 автор: Артем125   (12.07.2009 в 15:31)   письмо автору
 
 

Друзья,

Вот есть табличка
CREATE TABLE tables_body (
body_id integer(6) NOT NULL AUTO_INCREMENT,
heading_id integer(6),
page_id integer(4),
body_value TEXT,
PRIMARY KEY(body_id)
) ENGINE = INNODB;


body_id, heading_id, page_id,body_value
414 259 308 120
413 260 308 пес
412 261 308 2
411 259 308 300
410 260 308 кот
409 261 308 1

У меня есть постоянное поле page_id, и переменное heading_id, а нужно получить body_id
Например, page_id = 308, heading_id = 261 , а искомое body_id = 409
page_id = 308, heading_id = 260 , а искомое body_id = 410 и тд
Вроде де бы просто, но не получается

  Ответить  
 
 автор: kosta_in_net   (12.07.2009 в 15:49)   письмо автору
 
   для: Артем125   (12.07.2009 в 15:31)
 

а для чего его получить?

  Ответить  
 
 автор: Артем125   (12.07.2009 в 15:53)   письмо автору
 
   для: kosta_in_net   (12.07.2009 в 15:49)
 

для последующего обновления в базе с этой записью, а кстати, навели на мысль. Я думал сделать в два запроса (один получение, второй применение ), но лучше в один, если так можно.
А необходимо запись с этим уникальным ключем body_id обновить


$query_1 = "UPDATE ".TABLE_BODY."
SET body_value = '".$_POST[$buf]."'
WHERE body_id='".$row_body['body_id']."'
";

  Ответить  
 
 автор: Trianon   (12.07.2009 в 15:55)   письмо автору
 
   для: Артем125   (12.07.2009 в 15:31)
 

>Например, page_id = 308, heading_id = 261 , а искомое body_id = 409

А почему не 412?

page_id = 308, heading_id = 260 , а искомое body_id = 410

А почему не 413?
и тд

  Ответить  
 
 автор: Артем125   (12.07.2009 в 15:57)   письмо автору
 
   для: Trianon   (12.07.2009 в 15:55)
 

потому что конечный рельтат это таблица, со строками. первая строка имеет столбец номер 1, наименование кот, цена 300, вторая трока 2, пес, 120

  Ответить  
 
 автор: Trianon   (12.07.2009 в 16:02)   письмо автору
 
   для: Артем125   (12.07.2009 в 15:57)
 

Я не про конечный результат, а про это:
>У меня есть постоянное поле page_id, и переменное heading_id, а нужно получить body_id

Из этих условий для page_id = 308, heading_id = 261 подходят оба ключа: и 409 и 412.
Вы утверждаете, что правильный только один - 409.
Это значит, что Вы недописали какие-то дополнительные условия. Так надо дописать.
К примеру, определить минимальный из первичных ключей, удовлетворяющий условиям...

  Ответить  
 
 автор: Артем125   (12.07.2009 в 16:11)   письмо автору
 
   для: Trianon   (12.07.2009 в 16:02)
 

Вы правы, то что мне и нужно в отношении дополнительного условия,

$query_body = "SELECT body_id
FROM ".TABLE_BODY.", ".TABLE_HEADING."
WHERE page_id = '".$_POST['page_id']."'
AND heading_id ='".$row_heading['heading_id']."'
доп условие
";

и еще все это в цикле, идет перебор heading_id, и в одной итерации body_id это меньшее из всех, во второй большее, третье еще большее

  Ответить  
 
 автор: Trianon   (12.07.2009 в 16:34)   письмо автору
 
   для: Артем125   (12.07.2009 в 16:11)
 

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

  Ответить  
 
 автор: Артем125   (12.07.2009 в 16:38)   письмо автору
 
   для: Trianon   (12.07.2009 в 16:34)
 

body_id уникальный ключ, в его порядке

  Ответить  
 
 автор: Trianon   (12.07.2009 в 16:51)   письмо автору
 
   для: Артем125   (12.07.2009 в 16:38)
 

строки в таблице лежат внавал независимо от того, какие ключи созданы на её столбцах.

  Ответить  
 
 автор: Артем125   (12.07.2009 в 16:58)   письмо автору
 
   для: Trianon   (12.07.2009 в 16:51)
 

тогда просто под навалом мы понимаем разные вещи)))

вот body_id=414 у меня лежит body_value=120
так вот, может я неправильно понимаю, почему бы не выбрать из нескольких значений body_id наименьшее, далее по нарастающей

А Вы предлагаете, как решение сделать дополнительное поле с порядком?

  Ответить  
 
 автор: Trianon   (12.07.2009 в 17:04)   письмо автору
 
   для: Артем125   (12.07.2009 в 16:58)
 

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

У Вас нет поля, которое бы объединяло строки 409,410,411 , т.е. имело бы в них одно и то же значение. Может быть и порядковое.

впрочем, умою руки.

  Ответить  
 
 автор: Артем125   (12.07.2009 в 17:11)   письмо автору
 
   для: Trianon   (12.07.2009 в 17:04)
 

Trianon, спасибо Вам за помощь , думаю, доп поле все упростит

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования