SELECT * FROM table_1 WHERE id = id in table_2

时间:2016-09-05 07:21:13

标签: php mysql

已经有一段时间了;需要从ID列与另一个表中的ID匹配的表中选择数据。

到目前为止我的代码:

<?php
$sql = "SELECT * FROM input";
$sql2 = "SELECT * FROM output WHERE question_id =".$row["id"];
$result = $conn->query($sql);
$result2 = $conn->query($sql2);

if ($result->num_rows > 0) {
  $index = 0;
  while($row = $result->fetch_assoc()) {
    $index++;
    ?>

    <?php
    echo '<input type="hidden" name="questionid" value="'. $row['id'].'"/>';
    ?>

    <?php

    if ($result2->num_rows > 0) {
      while($row2 = $result2->fetch_assoc()) {
      }
    } else {
      echo "0 results";
    }
  }
} else {
  echo "0 results";
}
$conn->close();
?>

我知道我在这里缺少一些重要的东西。任何建议都表示赞赏。

6 个答案:

答案 0 :(得分:1)

为了实现这一点,您可以使用mysql中提供的JOIN查询。

例如:考虑两个表usercourse

用户表:

id  name         course
1   Alice        1
2   Bob          1
3   Caroline     2
4   David        5
5   Emma        (NULL)

课程表:

id  name         
1   HTML5
2   CSS3
3   JS
4   PHP
5   WORDPRESS

INNER JOIN(或只是加入)

最常用的子句是INNER JOIN。这会产生一组在用户和课程表中匹配的记录,即所有注册课程的用户:

SELECT user.name, course.name FROM `user` INNER JOIN `course` on user.course = course.id;

LEFT JOIN

如果我们要求所有学生及其课程的列表,即使他们没有注册,也会怎样? LEFT JOIN生成一组记录,它们匹配左表(用户)中的每个条目,而不管右表(课程)中的任何匹配条目:

SELECT user.name, course.name FROM `user` LEFT JOIN `course` on user.course = course.id;

正确加入

也许我们要求列出所有课程和学生,即使没有人注册? RIGHT JOIN生成一组记录,这些记录匹配右表(课程)中的每个条目,而不管左表(用户)中的任何匹配条目:

SELECT user.name, course.name FROM `user` RIGHT JOIN `course` on user.course = course.id;

答案 1 :(得分:1)

您错过了提取行项目以在下一个查询中提取您要用作CONSTRAINT的ID

ArrayList<App>

你也可以考虑这两个表的JOIN SELECT;

websocket error: QWebSocket::processHandshake: Connection closed while reading header.
websocket error: Invalid statusline in response: Date: Thu, 11 Feb 2016 20:07:37 GMT^M .
websocket error: Invalid statusline in response: Server: WSGIServer/0.1 Python/2.7.10^M .
websocket error: Invalid statusline in response: Upgrade: websocket^M .
websocket error: Invalid statusline in response: Connection: Upgrade^M .
websocket error: Invalid statusline in response: Sec-WebSocket-Accept: oQ+NK56UdGrsXFisB9chjE3SU+Y=^M .
websocket error: Invalid statusline in response: Sec-WebSocket-Version: 13^M .
websocket error: Invalid statusline in response: Content-Length: 0^M .
websocket error: Invalid statusline in response: ^M .

结帐MySql Join three tables

答案 2 :(得分:0)

不确定这是否是你想要的,所以在downvoting之前的评论中告诉我,试试这个:

SELECT * FROM output, input WHERE output.question_id = input.id

答案 3 :(得分:0)

您可以使用SQL INNER JOIN Keyword

实现此目的

<强> SQL

SELECT * FROM input INNER JOIN output on input.id = output.question_id

答案 4 :(得分:0)

使用此内部联接从两个表匹配的行中获取行

SELECT *
FROM input
INNER JOIN output
ON input.id=output.question_id;

答案 5 :(得分:0)

您应该使用INNER JOIN加入两个表,如果另一个表中不存在id,则会丢弃表中的行。尝试类似:

SELECT * FROM tbl1 INNER JOIN tbl2 ON tbl1.id = tbl2.id;