Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在两个表中列出成员的所有内容(问题、答案)_Php_Mysql_Select_Inner Join - Fatal编程技术网

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运算符组合两个查询就是一种方法。