powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Устранить повторяющиеся значения
5 сообщений из 5, страница 1 из 1
Устранить повторяющиеся значения
    #38607072
vipTelnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть задачи такая
Есть свойство некоторого товара, в зависимости от марки товара нам нужно прибавлять к стоимости этого товара стоимость этого свойства.

Реализовал я механизм сохранения этих прибавочных стоимостей правильно, тут все хорошо.
но потом когда нужно выбрать и показать ранее сохраненные стоимости происходит дублирование не которых записей

Сейчас покажу таблицы и все станет ясно
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 CREATE TABLE IF NOT EXISTS `jrt4z_betons_antifreeze` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(256) NOT NULL,
  `checked_out` int(11) NOT NULL,
  `checked_out_time` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- Дамп данных таблицы `jrt4z_betons_antifreeze`
--

INSERT INTO `jrt4z_betons_antifreeze` (`id`, `name`) VALUES
(1, '111'),
(2, '222');


Первая таблица ни чего не содержит кроме названия дополнительного свойства
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
CREATE TABLE IF NOT EXISTS `jrt4z_betons_antifreeze_price` (
  `aid` int(11) NOT NULL,
  `btype` varchar(255) NOT NULL,
  `bid` int(11) NOT NULL,
  `price` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `jrt4z_betons_antifreeze_price`
--

INSERT INTO `jrt4z_betons_antifreeze_price` (`aid`, `btype`, `bid`, `price`) VALUES
(1, 'Betons', 1, 111),
(1, 'Betons', 2, 0),
(1, 'Betons', 3, 0),
(1, 'Betons', 4, 0),
(1, 'Betons', 5, 0),
(1, 'Betons', 6, 0),
(1, 'Betons', 7, 0),
(1, 'Betons', 8, 0),
(1, 'Betons', 9, 0),
(1, 'Betons', 10, 0),
(1, 'Betons', 11, 0),
(1, 'Betons3_10', 1, 0),
(1, 'Betons3_10', 2, 0),
(1, 'Betons3_10', 3, 0),
(1, 'Betons3_10', 4, 0),
(1, 'Betons3_10', 5, 0),
(1, 'Betons3_10', 6, 0),
(1, 'Betons3_10', 7, 0),
(1, 'Betons2_5', 1, 0),
(1, 'Betons2_5', 2, 0),
(1, 'Betons2_5', 3, 0),
(1, 'Betons2_5', 4, 0),
(1, 'Betons2_5', 5, 0),
(1, 'Solns', 1, 0),
(1, 'Solns', 2, 0),
(1, 'Solns', 3, 0),
(1, 'Solns', 4, 0),
(1, 'Solns', 5, 0),
(2, 'Betons', 1, 111),
(2, 'Betons', 2, 0),
(2, 'Betons', 3, 0),
(2, 'Betons', 4, 0),
(2, 'Betons', 5, 0),
(2, 'Betons', 6, 0),
(2, 'Betons', 7, 0),
(2, 'Betons', 8, 0),
(2, 'Betons', 9, 0),
(2, 'Betons', 10, 0),
(2, 'Betons', 11, 0),
(2, 'Betons3_10', 1, 0),
(2, 'Betons3_10', 2, 0),
(2, 'Betons3_10', 3, 0),
(2, 'Betons3_10', 4, 0),
(2, 'Betons3_10', 5, 0),
(2, 'Betons3_10', 6, 0),
(2, 'Betons3_10', 7, 0),
(2, 'Betons2_5', 1, 0),
(2, 'Betons2_5', 2, 0),
(2, 'Betons2_5', 3, 0),
(2, 'Betons2_5', 4, 0),
(2, 'Betons2_5', 5, 0),
(2, 'Solns', 1, 0),
(2, 'Solns', 2, 0),
(2, 'Solns', 3, 0),
(2, 'Solns', 4, 0),
(2, 'Solns', 5, 0);


Вторая таблица
aid это идентификатор таблицы jrt4z_betons_antifreeze
btype это общая группа товаров
bid это номер товара в группе товаров
price стоимость наценки за данное свойство

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CREATE TABLE IF NOT EXISTS `jrt4z_betons_beton` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(256) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;

--
-- Дамп данных таблицы `jrt4z_betons_beton`
--

INSERT INTO `jrt4z_betons_beton` (`id`, `name`) VALUES
(1, 'Бетон М50 (В3.5)'),
(2, 'Бетон М75 (В5)',
(3, 'Бетон М100 (В7.5)'),
(4, 'Бетон М150 (В10)'),
(5, 'Бетон М200 (В15)'),
(6, 'Бетон М250 (В20) '),
(7, 'Бетон М300 (В22.5)'),
(8, 'Бетон М350 (В25)'),
(9, 'Бетон М400 (В30) '),
(10, 'Бетон М450 (В35)	'),
(11, 'Бетон М500 (В37.5)');


таблица с именами продуктов из группы бетон
Далее запрос который выполняю
Код: sql
1.
SELECT `beton`.`id`,`beton`.`name`,`price`.`price` FROM `jrt4z_betons_beton` AS `beton` LEFT JOIN `jrt4z_betons_antifreeze_price` AS `price` ON (`beton`.`id` = `price`.`aid` AND `price`.`btype` = 'Betons' AND `price`.`aid` = '2')


и результат который я получаю
http://firepic.org/][img] http://4.firepic.org/4/images/2014-04/07/097p6qi0jbzr.jpg [/img]
Как бы мне избавиться от повторяющейся записи Бетон М75 (В5) цена которой равна 0
...
Рейтинг: 0 / 0
Устранить повторяющиеся значения
    #38607102
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХЗ насчёт повторений, но вы соединяете по условию (таблица3).ид=(таблица2).аид
vipTelnet
Код: sql
1.
ON (`beton`.`id` = `price`.`aid` AND `price`.`btype` = 'Betons' AND `price`.`aid` = '2'

хотя выше писали, что связь - такая: (таблица1).ид=(таблица2).аид
vipTelnetaid это идентификатор таблицы jrt4z_betons_antifreezeОпечатка? Этот запрос вообще должен показывать только бетон м75.
...
Рейтинг: 0 / 0
Устранить повторяющиеся значения
    #38607106
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirЭтот запрос вообще должен показывать только бетон м75.вру, он должен только для 75-го показывать цену, для остальных будет null
...
Рейтинг: 0 / 0
Устранить повторяющиеся значения
    #38607238
vipTelnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
SELECT DISTINCT `beton`.`id`,`beton`.`name`,`price`.`price` FROM `jrt4z_betons_beton` AS `beton` LEFT JOIN `jrt4z_betons_antifreeze_price` AS `price` ON (`price`.`btype` = 'Betons' AND `price`.`aid` = 2 AND `price`.`bid` = `beton`.`id`)



Вот так нужно было
всем спасибо
...
Рейтинг: 0 / 0
Устранить повторяющиеся значения
    #38607823
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vipTelnet, на указанных выше данных (да и вообще если тройка aid-btype-bid является уникальным ключом) дистинкт в вышеприведённом запросе не нужен.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Устранить повторяющиеся значения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]