|
|
|
| mysql как одним запросом получить данные таблицы и одновременно еще список свойств из другой таблицы к этим данным?
например есть таблица:
_product:
id, name
и таблица:
_characteristic:
id, parent, description
parent - это привязка к id таблицы product.
так вот, интересует вопрос, можно ли одним запросом получить так же и список всех свойств для каждой записи, кол-во свойств для одной записи может быть любым кол-вом. | |
|
|
|
|
|
|
|
для: vbps
(10.12.2012 в 04:07)
| | Это обычный JOIN:
/*<?*/
SELECT *
FROM _product
JOIN _characteristic
ON _product.id=_characteristic.parent
|
| |
|
|
|
|
|
|
|
для: Sfinks
(10.12.2012 в 09:17)
| | Спасибо | |
|
|
|
|
|
|
|
для: vbps
(10.12.2012 в 21:17)
| | Все верно только для уверенности того, что не у всякого продукта могут быть характеристики, я бы добавил LEFT JOIN | |
|
|
|
|
|
|
|
для: oradev
(14.12.2012 в 22:25)
| | Спасибо.
Я уже обратил на это внимание.
Вот только теперь возник вопрос, как это все выводить постранично через limit.
Ведь например хочу я 10 записей через лимит и возвращается, например 10 записей одного и того же с разными свойствами, что тут обычно делают в таких случаях?
Не дергать же всю таблицу.... | |
|
|
|
|
|
|
|
для: vbps
(17.12.2012 в 02:55)
| | Сленгггг....
Что значит дергать? Обращаться ко всей таблице или считывать всю таблицу?
Если 1ое - то ДА, обращаясь ко всей таблице с лимитом вы получите только нужные строки. Если 2ое - то НЕТ, используя лимит вы не будете ДЕРГАТЬ всю таблицу. Или что-то еще третье? | |
|
|
|
|
|
|
|
для: Sfinks
(17.12.2012 в 09:23)
| | Меня интересует 10 записей из таблицы _product со свойствами в любом количестве из другой таблицы. | |
|
|
|
|
|
|
|
для: vbps
(17.12.2012 в 12:56)
| | два слова использовать LIMIT и ORDER BY | |
|
|
|
|
|
|
|
для: oradev
(17.12.2012 в 22:00)
| | Может я неправильно задал вопрос, или просто чего то не до понимаю:
Допустим есть в таблице _product:
1, Name1
2, Name2
и в таблице _characteristic поля, где 1-ое id, 2-е parent, и 3-е item (название):
1, 1, 1-е свойство для первого
... ...
1, 1, 10-е свойство для первого
2, 2, 1-е свойство для второго
...
При запросе:
SELECT *
FROM _product
LEFT JOIN _characteristic
ON _product.id=_characteristic.parent
LIMIT 0.10
|
так вот на выходе с limit 0,10 я получаю 10 записей c id=1 для _product, но разными свойствами, что то типа:
1, Name1, 1, 1-е свойство для первого
...
1, Name1, 1, 10-е свойство для первого
а вот запись с id 2 для _product cюда никак не попадает.
Мне же надо получить что то типа:
[1] => (
name => Name1,
characteristic => (
1-е свойство для первого
2-е свойство для первого
...
10-е свойство для первого
)
)
[2] => (
name => Name2,
characteristic => (
1-е свойство для второго
2-е свойство для второго
...
128-е свойство для второго
)
)
....
|
при использовании ORDER BY я получу только по одному свойству на запись, а это уже не удовлетворяет условию задачи. | |
|
|
|
|
|
|
|
для: vbps
(17.12.2012 в 23:31)
| | Тогда можно воспользоваться вложенным подзапросом:
SELECT *
FROM( SELECT * FROM _product LIMIT 0,10 )temp
LEFT JOIN _characteristic
ON temp.id=_characteristic.parent
|
| |
|
|
|
|
|
|
|
для: Sfinks
(18.12.2012 в 00:24)
| | ОГРОМНОЕ СПАСИБО | |
|
|
|