2015-05-09 6 views
1

У меня есть 5 столов,SQL запросов нескольких таблиц

машины (MachineID, имя),

инженеров (EngineerID, имя),

части (PartID, имя) ,

Неисправности (FaultID, MachineID, EngineerID, описание, дата),

FaultParts (FaultID, PartID)

Key = Первичный (жирный шрифт), внешнего ключа (курсив), Composite (курсив & жирным шрифтом)

Ошибка может потребовать более одного часть, чтобы исправить это

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

Я не уверен, как я должен делать это эффективно, или если таблицы должны быть настроены так, как они есть.

Любая помощь была бы принята с благодарностью, спасибо.

ответ

0

Я думаю, что это stackflow ответ может помочь: Query results based on multiple records using compound primary key

Вы можете сделать это в одном запросе с помощью добавления пункта или для каждой тройки идентификаторов (то есть для каждой выбранной строки в вашем GridView). Например:

SELECT whatever 
FROM Table1 
WHERE (KeyCol1=val1-1 AND KeyCol2=val1-2 AND KeyCol3=val1-3) 
OR (KeyCol1=val2-1 AND KeyCol2=val2-2 AND KeyCol3=val2-3) 
OR .. etc 
2

Try соединения все соответствующие таблицы, как:

SELECT e.name, m.name, f.description, p.name 
FROM Machine m INNER JOIN Faults f ON m.id = f.machineId 
INNER JOIN Engineers e ON e.id = f.engineerId 
INNER JOIN faultParts fp ON fp.faultId = f.id 
INNER JOIN parts p ON p.id = fp.partId 
1

Вы должны начать свой запрос от faults таблиц и присоединиться к другим таблицам с необходимыми полями, как вы идете. Для нескольких частей, вы можете использовать суммарный запрос с group_concat функции:

SELECT f.description, e.name, m.name, fpp.parts 
FROM faults f 
JOIN engineers e ON f.engineerid = e.engineerid 
JOIN machines m ON f.machineid = m.machineid 
JOIN (SELECT faultid, GROUP_CONCAT(name) AS parts 
     FROM  faultparts fp 
     JOIN  parts p ON fp.partid = p.partid 
     GROUP BY faultid) fpp ON f.faultid = fpp.faultid 
+0

Спасибо, это то, что я искал – rj93

Смежные вопросы