我有两个表使用INNER JOIN出现在用户信息页面。 现在我需要创建另一个表,我不能同时使用3个表来执行funcioncar。
使用旧代码(带有两个表)并在当前代码下面显示错误(带有三个表)。
旧代码:
// Pega subdomínio
$urlExplode = explode('.', $_SERVER['HTTP_HOST']);
if (count($urlExplode) > 2 && $urlExplode[0] !== 'www') {
$subdomain = $urlExplode[0];
// echo $subdomain;
}
// Diz que o usuário é igual ao subdomínio
$usuario = $subdomain;
// Select DB da Tabela TEXTOS
$sql = "SELECT * FROM vms_textos i INNER JOIN vms_users u on u.id = i.id where u.usuario='$usuario'";
$result = mysql_query($sql);
if($result === FALSE) {
die(mysql_error());
// TODO: better error handling
}
else {
$row = mysql_fetch_array($result);
// Tabela Textos
$userKeywords = $row['userKeywords'];
$userDesc = $row['userDesc'];
$userTitleSite = $row['userTitleSite'];
$userTextSobre = $row['userTextSobre'];
$userTextContatos = $row['userTextContatos'];
$userTextMaisInfos = $row['userTextMaisInfos'];
}
当前代码
// Pega subdomínio
$urlExplode = explode('.', $_SERVER['HTTP_HOST']);
if (count($urlExplode) > 2 && $urlExplode[0] !== 'www') {
$subdomain = $urlExplode[0];
// echo $subdomain;
}
// Diz que o usuário é igual ao subdomínio
$usuario = $subdomain;
// Select DB da Tabela TEXTOS
$sql = "SELECT * FROM (vms_textos t INNER JOIN vms_users u ON u.id = t.id) INNER JOIN vms_cores c ON u.id = c.id where u.usuario='$usuario'";
$result = mysql_query($sql);
if($result === FALSE) {
die(mysql_error());
// TODO: better error handling
}
else {
$row = mysql_fetch_array($result);
// Tabela Textos
$userKeywords = $row['userKeywords'];
$userDesc = $row['userDesc'];
$userTitleSite = $row['userTitleSite'];
$userTextSobre = $row['userTextSobre'];
$userTextContatos = $row['userTextContatos'];
$userTextMaisInfos = $row['userTextMaisInfos'];
}
提前感谢您的帮助。
答案 0 :(得分:0)
我从不喜欢这个sql 92模式我觉得很难阅读,所以,这里有一个更简单的方法:
$sql = "SELECT * FROM vms_textos t ,
vms_users u ,
vms_cores c
where u.id = t.id
and u.id = c.id
and u.usuario='$usuario'";
答案 1 :(得分:0)
听起来你需要使用外连接,然后(来自评论)
SELECT
*
FROM
vms_textos t
INNER JOIN vms_users u
ON u.id = t.id
left outer JOIN vms_cores c
ON u.id = c.id
where
u.usuario='$usuario'
基本上,使用内部联接,如果所有表中都没有数据,则不会返回。使用内/外连接的组合,您可以确定需要带回的内容。
根据以下评论,查询现在是:
SELECT
*
FROM
vms_cores c
INNER JOIN vms_users u
ON u.id = t.id
left outer JOIN vms_textos t
ON u.id = c.id
where
u.usuario='$usuario'
read this Q&A I wrote这可能也是一个好主意,可以更详细地了解这个答案的细节。