|
|
|
| Привет!
Вот уже несколько часов бьюсь над запросом.
Есть две связанные таблицы: properties_items_table и properties_item_for_groups_table.
В первой хранятся значение свойств, во второй - принадлежность свойства группе.
Нужно определить максимальное значение у поля shop_properties_items_value в таблице properties_items_table.
Вот запрос:
<?php
$query = "SELECT MAX(properties_items_table.properties_items_value) AS maxvalue,
properties_item_for_groups_table.groups_id
FROM properties_item_for_groups_table, properties_items_table
WHERE
properties_item_for_groups_table.groups_id='1289' AND // принадлежность этого свойства группе
properties_items_table.list_of_properties_id='136' // ID нужного свойства
";
?>
|
Результат выводит число 750. Не понимаю, откуда оно берется, хотя в таблице максимальное значение - 2000. Подозреваю, что я делаю неправильно связку. Чтобы было понятнее, приведу пример БД (пару последних записей; а так-то записей очень много):
properties_items_table
id items_catalog_item_id list_of_properties_id properties_items_value
2449 1736 136 2000
2447 1735 136 1500
|
properties_item_for_groups_table
id groups_id list_of_properties_id
1006 1289 137
1004 1289 136
|
| |
|
|
|
|
|
|
|
для: Fix
(05.09.2009 в 02:18)
| | Если какой тип поля в таблиц не числовой - удивляться не стоит.
А он явно не числовой. | |
|
|
|
|
|
|
|
для: Trianon
(05.09.2009 в 09:49)
| | Да, там хранятся еще и строки.
А как же тогда быть? У свойства с ID 136 хранятся ТОЛЬКО числа, там строк нет. А вот у свойства с ID 135, например, есть строковые значения.
Подскажите, пожалуйста... | |
|
|
|
|
|
|
|
для: FiX
(05.09.2009 в 11:32)
| | Менять структуру таблицы | |
|
|
|
|
|
|
|
для: mihdan
(05.09.2009 в 12:04)
| | К сожалению, поменять её не получится...
А может удастся сделать это с помощью двух-трех запросов? | |
|
|
|
|
|
|
|
для: FiX
(05.09.2009 в 12:19)
| | 1. Вы можете выполнять приведение типов перед операциями сравнения и сортировки.
Это функции CAST() и CONVERT() .
2. Если диапазон значений хранимых чисел ограничен разумными величинами, Вы можете помещать величины с добавленными лидирующими нулями. Для целых положительных величин можно применить LPAD() | |
|
|
|
|
|
|
|
для: Trianon
(05.09.2009 в 12:37)
| | Спасибо! Вроде получилось...
вот запрос:
SELECT MAX(CAST(properties_items_table.properties_items_value AS UNSIGNED) ) as maxvalue,
properties_items_table.*, properties_item_for_groups_table.groups_id
FROM properties_item_for_groups_table, properties_items_table
WHERE properties_item_for_groups_table.groups_id='1289'
AND properties_items_table.list_of_properties_id='136'
|
| |
|
|
|