Вопрос проектирования базы данных - необходима производительность - PullRequest
1 голос
/ 26 мая 2011

Я создал систему инвентаризации, которая в основном использует серверный язык сценариев для выполнения всей работы.Чтобы добиться некоторого прироста производительности, я стремлюсь лучше спроектировать свою базу данных, чтобы попытаться свести к минимуму сценарии.

У меня есть таблица с именем metal_part, которая имеет отношение один к одному с пятью другими таблицами, в основном с другими таблицами.другие части, которые эти части затем имеют отношение один к одному с несколькими другими таблицами.

Когда я запрашиваю metal_part, мне нужны все номера UPC из каждой таблицы, поэтому необходимо получить прямые отношения один к одномуих собственная информация из их непосредственных таблиц взаимосвязей и т. д. ... Можно ли сделать огромный запрос, чтобы построить все это и поместить его в форму, например:

(###) - ####/##/##/## [a-z]

Используя запрос?или я должен получить всю информацию и согласовать ее, используя язык сценариев?

Спасибо

Ответы [ 2 ]

2 голосов
/ 26 мая 2011

Вы сможете получить всю необходимую информацию, используя стандартное объединение, а затем с помощью функции concat, соответствующей вашей базе данных (см. Здесь http://www.1keydata.com/sql/sql-concatenate.html), вы можете сформировать нужную строку.

0 голосов
/ 26 мая 2011

Ваш вопрос очень расплывчатый.

Я предполагаю, что вы говорите о сопоставлении первичного ключа с именем partnumber или чего-то подобного.1005 *

SELECT mp.partnumber
  , mp.UPC_number
  , wp.UPC_number
  , pp.UPC_number
FROM metal_parts mp
INNER JOIN wood_parts wp ON (wp.partnumber = mp.partnumber)
INNER JOIN plastic_parts pp ON (pp.partnumber = mp.partnumber)
WHERE mp.partnumber = '8874578127';

Вы также можете сделать

SELECT mp.partnumber
  , group_concat(mp.UPC_number) as metal_UPCs
  , group_concat(wp.UPC_number) as wood_UPCs
  , group(concat(pp.UPC_number) as plastic_UPCs
FROM metal_parts mp
INNER JOIN wood_parts wp ON (wp.partnumber = mp.partnumber)
INNER JOIN plastic_parts pp ON (pp.partnumber = mp.partnumber)
WHERE mp.partnumber = '8874578127'
GROUP BY mp.partnumber;

или

SELECT mp.partnumber
  , concat_ws(','
    , group_concat(mp.UPC_number)
    , group_concat(wp.UPC_number)
    , group(concat(pp.UPC_number)
  ) as UPCs_of_parts
FROM metal_parts mp
INNER JOIN wood_parts wp ON (wp.partnumber = mp.partnumber)
INNER JOIN plastic_parts pp ON (pp.partnumber = mp.partnumber)
WHERE mp.partnumber = '8874578127'
GROUP BY mp.partnumber;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...