|
|
|
Как сделать выборку минимальным количеством запросов?
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. У меня есть 2 таблицы. Для наглядности упрощу: SELECT * FROM company; +----+-----------+ | id_comp | name | +----+-----------+ | 1 | первая | | 2 | вторая | | 3 | третья | +----+-----------+ SELECT * FROM description; +----+----------------------------+ | id_comp | products | +----+----------------------------+ | 1 | Икра заморская баклажанная | | 1 | Диски литые урановые | | 2 | жесткий диск неподъемный | | 2 | жесткий диск с подогревом| | 2 | кактус | | 3 | Зелёная машинка | +----+---------------------+ Необходимо на PHP по поиску товара, вывести сначала название компании, а затем список товаров. В итоге по запросу "диск" должно выйти: -------------------------------- первая -Диски литые урановые вторая - жесткий диск неподъемный - жесткий диск с подогревом Пытался одним запросом с помощью JOIN сделать, но не знаю как без повторений вывести название 1 раз. Перебирать предприятия и выводить только те, где количество продуктов не ноль - это ведь дергать вторую таблицу надо будет кучу раз - маразмом попахивает. В общем подскажите оптимальный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 01:13:32 |
|
||
|
Как сделать выборку минимальным количеством запросов?
|
|||
|---|---|---|---|
|
#18+
voffkamcПытался одним запросом с помощью JOIN сделать, но не знаю как без повторений вывести название 1 раз.Не пытайтесь заставить сервер выполнять работу клиента. voffkamcВ итоге по запросу "диск" должно выйти: -------------------------------- вторая - жесткий диск неподъемный - жесткий диск с подогревомНа самом деле по запросу "диск" должно выйти (от сервера): группаназваниеперваяДиски литые урановыевтораяжесткий диск неподъемныйвтораяжесткий диск с подогревомА представить это в другом виде - работа клиента. PS. Нет, конечно, можно нарисовать запрос, который выведет так, как вы хотите, но средствами скл это делать муторно. И потом хрен разберёшь, а что же этот запрос вообще делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2015, 04:50:10 |
|
||
|
Как сделать выборку минимальным количеством запросов?
|
|||
|---|---|---|---|
|
#18+
Спасибо, сделал. У меня в догонку еще один вопрос по структуре базы. Есть системные сообщения, которые необходимо прочитать всем пользователям и соответственно ставить пометку "прочитано" или "удалить". В голову приходит только заводить таблицу со столбцами id сообщений и каждого из пользователей. и соответственно значение 0/1/null т.е. непрочитано/ прочтано/ удалено, но здравый смысл подсказывает что это не самое верное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 13:20:11 |
|
||
|
Как сделать выборку минимальным количеством запросов?
|
|||
|---|---|---|---|
|
#18+
voffkamcВ голову приходит только заводить таблицу со столбцами id сообщений и каждого из пользователей. и соответственно значение 0/1/null т.е. непрочитано/ прочтано/ удаленоПочти так. Но запись для пары клиент/сообщение заносится только по факту просмотра. Нет записи - не смотрел. Есть запись - в зависимости от статуса просмотрено/удалено/прочее. Удаление - каскадно по факту удаления записи из таблицы сообщений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 13:35:48 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=47&tid=1833435]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
15ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 309ms |

| 0 / 0 |
