У меня есть два запроса MySQL, которые дают результаты, которые я ищу. В конечном итоге я хотел бы объединить эти два запроса, чтобы создать единый стол, и я застрял.Несколько MySQL JOINs и дублированные ячейки
Запрос 1:
SELECT scoc.isr, outcome_concept_id, concept_name as outcome_name
FROM standard_case_outcome AS sco INNER JOIN concept AS c
ON sco.outcome_concept_id = c.concept_id
INNER JOIN standard_case_outcome_category AS scoc
ON scoc.isr = sco.isr
WHERE scoc.outc_code = 'CA'
РЕЗУЛЬТАТ 1:
QUERY 2:
SELECT scoc.isr, drug_seq, concept_id, concept_name as drug_name
FROM standard_case_drug AS scd INNER JOIN concept AS c
ON scd.standard_concept_id = c.concept_id
INNER JOIN standard_case_outcome_category AS scoc
ON scoc.isr = scd.isr
WHERE scoc.outc_code = 'CA'
РЕЗУЛЬТАТ 2:
Я довольно уверен, что я могу понять, как сделать это с помощью Python/панды, но мне было интересно, если есть (а) способ сделать это MySQL (б) любая польза для этого с MySQL.
** Если вам интересно, this is the entire dataset.
Вот структура БД для соответствующих таблиц:
# Dump of table concept
# ------------------------------------------------------------
CREATE TABLE `concept` (
`concept_id` int(11) NOT NULL,
`concept_name` varchar(255) NOT NULL,
`domain_id` varchar(20) NOT NULL,
`vocabulary_id` varchar(20) NOT NULL,
`concept_class_id` varchar(20) NOT NULL,
`standard_concept` varchar(1) DEFAULT NULL,
`concept_code` varchar(50) NOT NULL,
`valid_start_date` date NOT NULL,
`valid_end_date` date NOT NULL,
`invalid_reason` varchar(1) DEFAULT NULL,
PRIMARY KEY (`concept_id`),
UNIQUE KEY `idx_concept_concept_id` (`concept_id`),
KEY `idx_concept_code` (`concept_code`),
KEY `idx_concept_vocabluary_id` (`vocabulary_id`),
KEY `idx_concept_domain_id` (`domain_id`),
KEY `idx_concept_class_id` (`concept_class_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
# Dump of table standard_case_drug
# ------------------------------------------------------------
CREATE TABLE `standard_case_drug` (
`primaryid` varchar(512) DEFAULT NULL,
`isr` varchar(512) DEFAULT NULL,
`drug_seq` varchar(512) DEFAULT NULL,
`role_cod` varchar(512) DEFAULT NULL,
`standard_concept_id` int(11) DEFAULT NULL,
KEY `idx_standard_case_drug_primary_id` (`primaryid`(255),`drug_seq`(255)),
KEY `idx_standard_case_drug_isr` (`isr`(255),`drug_seq`(255)),
KEY `idx_standard_case_drug_standard_concept_id` (`standard_concept_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
# Dump of table standard_case_outcome
# ------------------------------------------------------------
CREATE TABLE `standard_case_outcome` (
`primaryid` varchar(512) DEFAULT NULL,
`isr` varchar(512) DEFAULT NULL,
`pt` varchar(512) DEFAULT NULL,
`outcome_concept_id` int(11) DEFAULT NULL,
`snomed_outcome_concept_id` int(11) DEFAULT NULL,
KEY `idx_standard_case_outcome_primary_id` (`primaryid`(255)),
KEY `idx_standard_case_outcome_isr` (`isr`(255)),
KEY `idx_standard_case_outcome_outcome_concept_id` (`outcome_concept_id`),
KEY `idx_standard_case_outcome_snomed_outcome_concept_id` (`snomed_outcome_concept_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
# Dump of table standard_case_outcome_category
# ------------------------------------------------------------
CREATE TABLE `standard_case_outcome_category` (
`primaryid` varchar(512) DEFAULT NULL,
`isr` varchar(512) DEFAULT NULL,
`outc_code` varchar(512) DEFAULT NULL COMMENT 'Code for a patient outcome (See table below) CODE MEANING_TEXT ----------------DE Death LT Life-ThreateningHO Hospitalization - Initial or ProlongedDS DisabilityCA Congenital AnomalyRI Required Intervention to Prevent PermanentImpairment/DamageOT Other Serious (Important Medical Event) NOTE: The outcome from the latest version of a case is provided. If there is more than one outcome, the codes willbe line listed.',
`snomed_concept_id` int(11) DEFAULT NULL,
KEY `idx_standard_case_outcome_category_primary_id` (`primaryid`(255)),
KEY `idx_standard_case_outcome_category_isr` (`isr`(255)),
KEY `idx_standard_case_outcome_category_snomed_concept_id` (`snomed_concept_id`,`outc_code`(255))
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Необходимо предоставить образцы данных и желаемые результаты. Промежуточные запросы на самом деле не объясняют вашу структуру данных. –
Спасибо за отзыв, @GordonLinoff. Набор данных составляет почти 1 ГБ, поэтому мне нужно подумать о том, как получить небольшой сегмент, который все равно будет предоставлять результаты. Что касается структуры, я сделаю это обновление сейчас. – Ryan