已经有一段时间了;需要从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();
?>
我知道我在这里缺少一些重要的东西。任何建议都表示赞赏。
答案 0 :(得分:1)
为了实现这一点,您可以使用mysql中提供的JOIN查询。
例如:考虑两个表user
和course
用户表:
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 .
答案 2 :(得分:0)
不确定这是否是你想要的,所以在downvoting之前的评论中告诉我,试试这个:
SELECT * FROM output, input WHERE output.question_id = input.id
答案 3 :(得分:0)
<强> 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;