2015-05-25 6 views
2

Я новичок в mySQL. У меня есть несколько запросов sql для объединения, и я использую php и mySQL. Как я могу объединить запрос? Весь результат запроса, который мне нужно отобразить в одной строке таблицы.Как объединить несколько запросов mySQL?

<?php 
 
$query1="SELECT s.staffName, s.staffNo, g.grade, g.gradePosition, g.gradeDepartment 
 
\t \t \t FROM tblstaff s, tblgrade g where s.staffNo=g.staffNo"; \t \t 
 
\t $result=mysql_query($query1) or die (mysql_error()); \t \t 
 
\t while($row= mysql_fetch_array($result)) 
 
\t { 
 
\t ?> 
 
\t \t <td><?php echo $row['staffName']; ?></td> <!--display staff name--> 
 
\t \t <td><?php echo $row['staffNo']; ?></td> <!--display staff number--> 
 
\t \t <td><?php echo $row['grade']; ?></td> <!--display staff grade--> 
 
\t \t <td><?php echo $row['gradePosition']; ?></td> <!--display staff position--> 
 
\t \t <td><?php echo $row['gradeDepartment']; ?></td><!--display staff department--> 
 
\t \t <tr> 
 
\t 
 
<?php 
 
    } 
 
?> \t 
 

 
<?php 
 
$query2="select catTechnical, catOtherTechnical, catTechnicalDescription, catOtherTechnicalDescription, catWeightage, 
 
\t \t \t perReqScore \t \t 
 
\t \t \t from tblcategory c join tblperformance p on c.catID=p.catID"; \t 
 
\t $result=mysql_query($query2) or die (mysql_error()); \t 
 
\t while($row= mysql_fetch_array($result)) 
 
\t { 
 
\t ?> 
 
\t \t <td><?php echo $row['catTechnical']; ?></td> <!--display technical category--> 
 
\t \t <td><?php echo $row['catTechnicalDescription']; ?></td> <!--display technical description--> 
 
\t \t <td><?php echo $row['catOtherTechnicalDescription']; ?></td> <!--display other technical description--> 
 
\t \t <td><?php echo $row['catWeightage']; ?></td> <!--display weightage--> 
 
\t \t <td><?php echo $row['perReqScore']; ?></td <!--display required score--> 
 
<?php 
 
} 
 
?>

Это мои таблицы базы данных.

tblstaff

+---------+-----------+ 
 
| staffNo | staffName | 
 
+---------+-----------+ 
 
| 1002435 | Fadzlan | 
 
+---------+-----------+

tblgrade

+---------+---------+-------+---------------+-----------------+ 
 
| gradeID | staffNo | grade | gradePosition | gradeDepartment | 
 
+---------+---------+-------+---------------+-----------------+ 
 
|  1 | 1002435 | E14 | Manager  | IB    | 
 
+---------+---------+-------+---------------+-----------------+

tblcategory

+-------+--------------+---------------------------+-------------------------+--------------+ 
 
| catID | catTechnical |  catOtherTechnical  | catTechnicalDescription | catWeightage | 
 
+-------+--------------+---------------------------+-------------------------+--------------+ 
 
| 18 | Project(18) | Project Coordination(181) |      30 |    | 
 
+-------+--------------+---------------------------+-------------------------+--------------+

tblperformance

+-------+-------+----------+-------------+ 
 
| perID | catID | staffNo | perReqScore | 
 
+-------+-------+----------+-------------+ 
 
|  1 | 18 | 10028531 |   4 | 
 
+-------+-------+----------+-------------+

Это мой текущий код и таблица базы данных. Мне нужно объединить запрос 1 и запрос 2, потому что я хочу отображать результат в одной строке таблицы staffNo. Я имею в виду один штат Нет за одну строку в таблице. Затем другой штат будет отображаться в новую строку той же таблицы.

+0

Яна Рина - код, который вы дали здесь просто присваивает строку переменной PHP (Ithink). Покажите, как вы его выполняете. – TarasB

+0

'UNION' можно использовать здесь, если вы хотите совместить результат с несколькими операторами SELECT. –

+0

, пожалуйста, разместите структуру таблиц и образец того, что вы хотите получить, из того, что вы описали, вам может понадобиться СОЮЗ или ПРИСОЕДИНЯЙТЕСЬ, чтобы получить то, что вы хотели. – lightbringer

ответ

0

В вашем третьем запросе не ясно, в каких столбцах находится таблица. Поскольку вы говорите, что все результаты должны отображаться в одной строке, я предполагаю, что s.staffNo = g.staffNo истинно только для одной пары строк, а также что c.catID = p.catID истинно только для одной пары строк. Тогда вы можете просто использовать JOIN. Я бы предложил добавить короткие имена таблиц. UNION не будет работать, потому что это для объединения наборов строк одинаковой длины и одинаковых типов столбцов.

Редактировать: Добавлено c. и p. Пожалуйста, не используйте mysql_query, это устарело. Вместо этого используйте mysqli_query. Я не уверен, что эта база данных разработана наилучшим образом. Разве вы не можете просто объединить все в tblstaff?

SELECT s.staffName, s.staffNo, g.grade, g.gradePosition, g.gradeDepartment, 
c.catTechnical, c.catOtherTechnical, c.catTechnicalDescription, c.catOtherTechnicalDescription, c.catWeightage, p.perReqScore, p.perActScore, p.perAction, p.perOtherAction, p.perTrainingIlsas, p.perTrainingPublic 
FROM tblstaff s 
JOIN tblgrade g ON s.staffNo = g.staffNo 
JOIN tblcategory c 
JOIN tblperformance p on c.catID = p.catID 
+0

Прошу прощения за то, что не упоминал в вопросе , Мой третий запрос состоит из двух таблиц, которые являются tblcategory и tblperformance от штата Нет. Я обновил свой предыдущий вопрос, если вы хотите увидеть мой код. Тд –

0
SELECT s.staffName, s.staffNo, g.grade, g.gradePosition, g.gradeDepartment, 
    c.catTechnical, c.catOtherTechnical, c.catTechnicalDescription, 
    c.catOtherTechnicalDescription, c.catWeightage, c.perReqScore, c.perActScore, 
    c.perAction, c.perOtherAction, c.perTrainingIlsas, c.perTrainingPublic 
FROM tblstaff s, tblgrade g, tblcategory c 
JOIN tblperformance p on c.catID = p.catID 
WHERE s.staffNo = g.staffNo; 
0

вы сделали все, что уже кроме join tblperformance p on s.staffNo=p.staffNo

SELECT s.staffName, s.staffNo, g.grade, g.gradePosition, g.gradeDepartment 
c.catTechnical, c.catOtherTechnical, c.catTechnicalDescription, 
c.catOtherTechnicalDescription, c.catWeightage, p.perReqScore 

FROM tblstaff s 
join tblgrade g on s.staffNo=g.staffNo 
join tblperformance p on s.staffNo=p.staffNo 
join tblcategory c on p on c.catID=p.catID 
Смежные вопросы