2014-12-31 3 views
0

Я создаю сайт, на котором пользователь может добавить некоторую информацию о нескольких компьютерах в базу данных.php и mysql запросы

В базе данных mysql у меня есть 3 таблицы. TypeOfMachine, программное обеспечение и аппаратное обеспечение. Единственное, что у них есть, это NumberOfMachine.

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

Любые идеи, как я могу это сделать?

И как я могу соединить все 3 таблицы в один?

Я думал об этом коде, но я не знаю, что положить в ГДЕ. У меня 10 переменных. и я должен показать всем компьютерам то, что пользователь спросил, и их информация, как хорошо!

$search1 = " 
SELECT 
    TypeOfMachine.NumberOfMachine, TypeOfMachine.TypeOfMachine, TypeOfMachine.OS, Software.Software1, Software.Software2, Software.Software3, Hardware.SSD, Hardware.Harddisk, Hardware.MonitorSize, Hardware.Ram, Hardware.Rom, Hardware.Processor 
FROM TypeOfMachine, Software, Hardware 
WHERE 

но я

+0

Вы должны добавить специальный код, который вы пытались – Jonathan

+0

как насчет @ Джонатан сейчас? – noel293

ответ

0

Вы хотите использовать join. Этот пример основан на том, что вы сказали поле NumberOfMachine присутствует во всех таблицах и является связующим звеном между ними:

SELECT 
    TypeOfMachine.NumberOfMachine, 
    TypeOfMachine.TypeOfMachine, 
    TypeOfMachine.OS, 
    Software.Software1, 
    Software.Software2, 
    Software.Software3, 
    Hardware.SSD, 
    Hardware.Harddisk, 
    Hardware.MonitorSize, 
    Hardware.Ram, 
    Hardware.Rom, 
    Hardware.Processor 
FROM TypeOfMachine 
LEFT JOIN Software 
    ON Software.NumberOfMachine = TypeOfMachine.NumberOfMachine 
LEFT JOIN Hardware 
    ON Hardware.NumberOfMachine = TypeOfMachine.NumberOfMachine 
WHERE 
    ... 
+0

да, но если пользователь хочет просматривать только компьютеры, работающие под управлением win8 или запускающие win8 и имеющие жесткий диск xGB? вот что я не могу понять! – noel293

+0

Вам нужно будет предоставить некоторые примеры данных из каждой таблицы, чтобы мы могли помочь вам с этим –

+0

информация в каждой таблице случайна. Пользователь отправляет новые записи всякий раз, когда хочет! – noel293

0

Это общий вопрос, я не знаю, какие таблицы содержит столбцы spesific как индикатор для всех таблиц. Речь идет о внутреннем и внешнем соединении:

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

Inner join: The results table produced by an inner join contains only rows that existed in both tables. 

Outer join: The combined table produced by an outer join contains all rows that existed in one table with blanks in the columns for the rows that did not exist in the second table. 

Например, если таблица1 содержит строку для Джо и строку для Салли, и таблица2 содержит только строку для Салли, внутреннее соединение будет содержать только одну строку: строка для Салли. Тем не менее, внешнее объединение будет содержать две строки - строку для Джо и строку для Салли - хотя в строке для Джо будет пустое поле для веса.

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

Два вида внешних соединений контролируют, какая таблица устанавливает ряды и которые должны соответствовать: ЛЕВАЯ ВСТУПЛЕНИЕ и ПРАВОЕ СОЕДИНЕНИЕ.

Вы используете разные запросы SELECT для внутреннего соединения и двух типов внешних соединений. Следующий запрос является внутреннее соединение:

SELECT columnnamelist FROM table1,table2 
         WHERE table1.col2 = table2.col2 

И эти запросы являются внешние соединения:

SELECT columnnamelist FROM table1 LEFT JOIN table2 
     ON table1.col1=table2.col2 
SELECT columnnamelist FROM table1 RIGHT JOIN table2 
     ON table1.col1=table2.col2 

Во всех трех запросов, table1 и table2 являются таблицы должны быть соединены. Вы можете присоединиться к более чем двум таблицам. В обоих запросах col1 и col2 являются именами столбцов, которые сопоставляются для объединения таблиц. Таблицы сопоставляются на основе данных в этих столбцах. Эти два столбца могут иметь одно и то же имя или разные имена, но они должны содержать один и тот же тип данных.

Для общей концепции вы можете использовать @Scrowler предложение, или это один:

http://stackoverflow.com/questions/1204217/mysql-select-join-3-tables 
Смежные вопросы