|
|
|
| Друзья,
Вот есть табличка
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 и тд
Вроде де бы просто, но не получается | |
|
|
|
|
|
|
|
для: Артем125
(12.07.2009 в 15:31)
| | а для чего его получить? | |
|
|
|
|
|
|
|
для: 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']."'
"; | |
|
|
|
|
|
|
|
для: Артем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?
и тд | |
|
|
|
|
|
|
|
для: Trianon
(12.07.2009 в 15:55)
| | потому что конечный рельтат это таблица, со строками. первая строка имеет столбец номер 1, наименование кот, цена 300, вторая трока 2, пес, 120 | |
|
|
|
|
|
|
|
для: Артем125
(12.07.2009 в 15:57)
| | Я не про конечный результат, а про это:
>У меня есть постоянное поле page_id, и переменное heading_id, а нужно получить body_id
Из этих условий для page_id = 308, heading_id = 261 подходят оба ключа: и 409 и 412.
Вы утверждаете, что правильный только один - 409.
Это значит, что Вы недописали какие-то дополнительные условия. Так надо дописать.
К примеру, определить минимальный из первичных ключей, удовлетворяющий условиям... | |
|
|
|
|
|
|
|
для: 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 это меньшее из всех, во второй большее, третье еще большее | |
|
|
|
|
|
|
|
для: Артем125
(12.07.2009 в 16:11)
| | имейте в виду, что строки в таблице лежат внавал, и никакого собственного порядка не имеют. | |
|
|
|
|
|
|
|
для: Trianon
(12.07.2009 в 16:34)
| | body_id уникальный ключ, в его порядке | |
|
|
|
|
|
|
|
для: Артем125
(12.07.2009 в 16:38)
| | строки в таблице лежат внавал независимо от того, какие ключи созданы на её столбцах. | |
|
|
|
|
|
|
|
для: Trianon
(12.07.2009 в 16:51)
| | тогда просто под навалом мы понимаем разные вещи)))
вот body_id=414 у меня лежит body_value=120
так вот, может я неправильно понимаю, почему бы не выбрать из нескольких значений body_id наименьшее, далее по нарастающей
А Вы предлагаете, как решение сделать дополнительное поле с порядком? | |
|
|
|
|
|
|
|
для: Артем125
(12.07.2009 в 16:58)
| | Потому что при запросах, чуть более сложных, чем просто вывести строки в указанном порядке, вот это самое "далее по нарастающей" у Вас не получится.
У Вас нет поля, которое бы объединяло строки 409,410,411 , т.е. имело бы в них одно и то же значение. Может быть и порядковое.
впрочем, умою руки. | |
|
|
|
|
|
|
|
для: Trianon
(12.07.2009 в 17:04)
| | Trianon, спасибо Вам за помощь , думаю, доп поле все упростит | |
|
|
|