Php 在两个表中列出成员的所有内容(问题、答案)
想要列出个人的所有问题和所有答案Php 在两个表中列出成员的所有内容(问题、答案),php,mysql,select,inner-join,Php,Mysql,Select,Inner Join,想要列出个人的所有问题和所有答案 我不知道我应该使用还是内部选择 tb问题 id-成员-问题-标题 Tbanswers id-成员-答案-标题 只需获取每个表的标题即可尝试以下查询: SELECT id,member,'Q' as Type, question as QA FROM Tbquestions WHERE member='member1' UNION ALL SELECT id,member,'A' as Type, answer as QA FROM Tbanswers WHERE
我不知道我应该使用还是内部选择 tb问题
id-成员-问题-标题 Tbanswers
id-成员-答案-标题 只需获取每个表的标题即可尝试以下查询:
SELECT id,member,'Q' as Type, question as QA FROM Tbquestions
WHERE member='member1'
UNION ALL
SELECT id,member,'A' as Type, answer as QA FROM Tbanswers
WHERE member='member1'
样本输出:
id member Type QA
1 Name1 Q What is it?
3 Name4 Q Who are you?
1 Name2 A My name is Name2
4 Name3 A He is dead, Jim.
编辑
为每个查询添加Limit
子句,以查找5个问题和10个答案:
SELECT id,member,'Q' as Type, question as QA FROM Tbquestions
WHERE member='member1' LIMIT 5
UNION ALL
SELECT id,member,'A' as Type, answer as QA FROM Tbanswers
WHERE member='member1' LIMIT 10
请尝试以下查询:
SELECT id,member,'Q' as Type, question as QA FROM Tbquestions
WHERE member='member1'
UNION ALL
SELECT id,member,'A' as Type, answer as QA FROM Tbanswers
WHERE member='member1'
样本输出:
id member Type QA
1 Name1 Q What is it?
3 Name4 Q Who are you?
1 Name2 A My name is Name2
4 Name3 A He is dead, Jim.
编辑
为每个查询添加Limit
子句,以查找5个问题和10个答案:
SELECT id,member,'Q' as Type, question as QA FROM Tbquestions
WHERE member='member1' LIMIT 5
UNION ALL
SELECT id,member,'A' as Type, answer as QA FROM Tbanswers
WHERE member='member1' LIMIT 10
请尝试以下查询:
SELECT id,member,'Q' as Type, question as QA FROM Tbquestions
WHERE member='member1'
UNION ALL
SELECT id,member,'A' as Type, answer as QA FROM Tbanswers
WHERE member='member1'
样本输出:
id member Type QA
1 Name1 Q What is it?
3 Name4 Q Who are you?
1 Name2 A My name is Name2
4 Name3 A He is dead, Jim.
编辑
为每个查询添加Limit
子句,以查找5个问题和10个答案:
SELECT id,member,'Q' as Type, question as QA FROM Tbquestions
WHERE member='member1' LIMIT 5
UNION ALL
SELECT id,member,'A' as Type, answer as QA FROM Tbanswers
WHERE member='member1' LIMIT 10
请尝试以下查询:
SELECT id,member,'Q' as Type, question as QA FROM Tbquestions
WHERE member='member1'
UNION ALL
SELECT id,member,'A' as Type, answer as QA FROM Tbanswers
WHERE member='member1'
样本输出:
id member Type QA
1 Name1 Q What is it?
3 Name4 Q Who are you?
1 Name2 A My name is Name2
4 Name3 A He is dead, Jim.
编辑
为每个查询添加Limit
子句,以查找5个问题和10个答案:
SELECT id,member,'Q' as Type, question as QA FROM Tbquestions
WHERE member='member1' LIMIT 5
UNION ALL
SELECT id,member,'A' as Type, answer as QA FROM Tbanswers
WHERE member='member1' LIMIT 10
如果问题和相应答案之间存在关系,则应进行连接。
因为这些表是通过成员id关联的,所以我认为不应该使用join。相反,使用UNION ALL对两个表中的结果集进行简单的选择和组合。如果问题和相应的答案之间存在关系,则应执行Join ALL。
global $mysqli;
$stmt = $mysqli->prepare("SELECT title from Tbquestions WHERE member = ?");
$stmt->bind_param('s',$member);
if($stmt->execute()){
$stmt->bind_result($questions);
$stmt->close();
}
$stmt = $mysqli->prepare("SELECT title from Tbanswers WHERE member = ?");
$stmt->bind_param('s',$member);
if($stmt->execute()){
$stmt->bind_result($answers);
$stmt->close();
}
$allposts = array_merge($questions, $answers);
echo '<pre>';
print_r($allposts, false);
因为这些表是通过成员id关联的,所以我认为不应该使用join。相反,使用UNION ALL对两个表中的结果集进行简单的选择和组合。如果问题和相应的答案之间存在关系,则应执行Join ALL。
global $mysqli;
$stmt = $mysqli->prepare("SELECT title from Tbquestions WHERE member = ?");
$stmt->bind_param('s',$member);
if($stmt->execute()){
$stmt->bind_result($questions);
$stmt->close();
}
$stmt = $mysqli->prepare("SELECT title from Tbanswers WHERE member = ?");
$stmt->bind_param('s',$member);
if($stmt->execute()){
$stmt->bind_result($answers);
$stmt->close();
}
$allposts = array_merge($questions, $answers);
echo '<pre>';
print_r($allposts, false);
因为这些表是通过成员id关联的,所以我认为不应该使用join。相反,使用UNION ALL对两个表中的结果集进行简单的选择和组合。如果问题和相应的答案之间存在关系,则应执行Join ALL。
global $mysqli;
$stmt = $mysqli->prepare("SELECT title from Tbquestions WHERE member = ?");
$stmt->bind_param('s',$member);
if($stmt->execute()){
$stmt->bind_result($questions);
$stmt->close();
}
$stmt = $mysqli->prepare("SELECT title from Tbanswers WHERE member = ?");
$stmt->bind_param('s',$member);
if($stmt->execute()){
$stmt->bind_result($answers);
$stmt->close();
}
$allposts = array_merge($questions, $answers);
echo '<pre>';
print_r($allposts, false);
因为这些表是通过成员id关联的,所以我认为不应该使用join。相反,使用UNION ALL执行简单的选择并组合两个表中的结果集global$mysqli;
global $mysqli;
$stmt = $mysqli->prepare("SELECT title from Tbquestions WHERE member = ?");
$stmt->bind_param('s',$member);
if($stmt->execute()){
$stmt->bind_result($questions);
$stmt->close();
}
$stmt = $mysqli->prepare("SELECT title from Tbanswers WHERE member = ?");
$stmt->bind_param('s',$member);
if($stmt->execute()){
$stmt->bind_result($answers);
$stmt->close();
}
$allposts = array_merge($questions, $answers);
echo '<pre>';
print_r($allposts, false);
$stmt=$mysqli->prepare(“从Tbquestions中选择标题,其中成员=?”;
$stmt->bind_参数('s',$member);
如果($stmt->execute()){
$stmt->bind_结果($questions);
$stmt->close();
}
$stmt=$mysqli->prepare(“从Tbanswers中选择标题,其中成员=?”;
$stmt->bind_参数('s',$member);
如果($stmt->execute()){
$stmt->bind_result($answers);
$stmt->close();
}
$allposts=array\u merge($questions,$answers);
回声';
打印($allposts,false);
global$mysqli;
$stmt=$mysqli->prepare(“从Tbquestions中选择标题,其中成员=?”;
$stmt->bind_参数('s',$member);
如果($stmt->execute()){
$stmt->bind_结果($questions);
$stmt->close();
}
$stmt=$mysqli->prepare(“从Tbanswers中选择标题,其中成员=?”;
$stmt->bind_参数('s',$member);
如果($stmt->execute()){
$stmt->bind_result($answers);
$stmt->close();
}
$allposts=array\u merge($questions,$answers);
回声';
打印($allposts,false);
global$mysqli;
$stmt=$mysqli->prepare(“从Tbquestions中选择标题,其中成员=?”;
$stmt->bind_参数('s',$member);
如果($stmt->execute()){
$stmt->bind_结果($questions);
$stmt->close();
}
$stmt=$mysqli->prepare(“从Tbanswers中选择标题,其中成员=?”;
$stmt->bind_参数('s',$member);
如果($stmt->execute()){
$stmt->bind_result($answers);
$stmt->close();
}
$allposts=array\u merge($questions,$answers);
回声';
打印($allposts,false);
global$mysqli;
$stmt=$mysqli->prepare(“从Tbquestions中选择标题,其中成员=?”;
$stmt->bind_参数('s',$member);
如果($stmt->execute()){
$stmt->bind_结果($questions);
$stmt->close();
}
$stmt=$mysqli->prepare(“从Tbanswers中选择标题,其中成员=?”;
$stmt->bind_参数('s',$member);
如果($stmt->execute()){
$stmt->bind_result($answers);
$stmt->close();
}
$allposts=array\u merge($questions,$answers);
回声';
打印($allposts,false);
但我使用内部选择还是简单选择?使用简单选择。它的速度更快,而且更重要的是对数据库的成本更低。表中的数据示例和预期结果集的示例将有助于回答您的问题。通常,对于联接操作,我们希望表之间存在外键关系。通常,我们希望id
列是主键,而不希望它们匹配。我们希望每个表中的一个成员有多行,一个成员上的连接将给出一个叉积,Tbquestions中的每一行都与Tbanswers中的每一行匹配,一个可能有很多重复项的大型结果集。我想列出用户提出的问题和他给出的答案gave@Papa查理:你想做什么“匹配”吗在问题和答案之间,您是希望为每个问题返回特定的答案,还是仅将每个问题与每个答案匹配?如果您只想组合两个列表,那么使用UNION ALL set运算符组合两个查询是最好的选择。但是我使用内部选择还是简单选择?使用简单选择。它的速度更快,而且更重要的是对数据库的成本更低。表中的数据示例和预期结果集的示例将有助于回答您的问题。通常,对于联接操作,我们希望表之间存在外键关系。通常,我们希望id
列是主键,而不希望它们匹配。我们希望每个表中的一个成员有多行,一个成员上的连接将给出一个叉积,Tbquestions中的每一行都与Tbanswers中的每一行匹配,一个可能有很多重复项的大型结果集。我想列出用户提出的问题和他给出的答案gave@Papa查理:你想做什么“匹配”吗在问题和答案之间,您是希望为每个问题返回特定的答案,还是仅将每个问题与每个答案匹配?如果您只想组合两个列表,那么使用UNION ALL set运算符组合两个查询就是一种方法。