[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как лучше сделать реализацию
Страницы: 1, 2, 3, 4
Astin
Не что то не то я выложил
По любому идет первый запрос, собираем данные в цикле
вот потом второй с джоинами, а как сделать никак не соображу
Astin
первый запрос к сертификатам
$stmt = $pdo->query('SELECT * FROM certificate');
$go = '';
foreach ($stmt as $row) {

echo 'Название сертификата - '.$row['name'];

$go .= $row['id'];
}

второй по госту

$stmt = $pdo->query('SELECT compound.*, gost.*
FROM gost
LEFT JOIN compound ON gost.id = compound.id_gost
WHERE compound.id_certificate = '
.$go);

foreach ($stmt as $row) {

echo 'ГОСТ - '.$row['name'];
}


Так не так что то не соображу
Valick
Astin, не так. Вся задача решается одним запросом, сколько ещё раз повторить))))

_____________
Стимулятор ~yoomoney - 41001303250491
Astin
Понял понял, точно, одним запросом.
Уже саму суть вкурил, изучаю связь многие ко многим
Astin
Создал для теста 3 таблицы

CREATE TABLE IF NOT EXISTS `certificat` (
`c_id` int(244) NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
`code` int(11) NOT NULL,
`confirm` text NOT NULL,
PRIMARY KEY (`c_id`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `gost` (
`g_id` int(244) NOT NULL AUTO_INCREMENT,
`g_name` text NOT NULL,
`description` text NOT NULL,
`g_file` varchar(250) NOT NULL,
PRIMARY KEY (`g_id`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `compound` (
`id` int(244) NOT NULL AUTO_INCREMENT,
`certificat_id` int(11) NOT NULL,
`gost_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


Внес данные

INSERT INTO gost (g_name) VALUES
('ГОСТ 20448-90'),
(
'ГОСТ Р 52087-2003'),
(
'ГОСТ 13109-97'),
(
'ГОСТ Р 52201-2004');

INSERT INTO certificat (name, code, confirm) VALUES
('Масла моторные для дизельных двигателей ',300, 'П. 2. 2, табл. 2 (показатели 3, 4,7) '),
(
'Масла авиационные',300, ''),
(
'Масла моторные автотракторные',300, ''),
(
'Масла моторные для автотракторных дизелей',300, '');

INSERT INTO compound (certificat_id, gost_id) VALUES
(1,1),
(
1,2),
(
1,4),
(
2,3),
(
3,1),
(
3,4),
(
4,2);

У первого сертификата 3 госта, у второго 1, у третьего 2, у четвертого 1

делаю запрос

$sql = $pdo->query('SELECT certificat.*, gost.*
FROM (certificat JOIN compound ON certificat.c_id = compound.certificat_id)
JOIN gost t ON compound.gost_id = gost.g_id'
);

Ничерта не выходит
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.