Php 使用两个不同的where子句进行内部/左侧联接
我正在两种不同条件下将两个表连接在一起。例如,假设我有以下嵌套查询:Php 使用两个不同的where子句进行内部/左侧联接,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,我正在两种不同条件下将两个表连接在一起。例如,假设我有以下嵌套查询: $Query = $DB->prepare("SELECT ID, Name FROM modifications WHERE TYPE =1 & WFAbility = '0'"); $Query->execute(); $Query->bind_result($Mod_ID,$Mod_Name); 此查询: $Query= $DB->prepare("SELECT `ModID` fro
$Query = $DB->prepare("SELECT ID, Name FROM modifications
WHERE TYPE =1 & WFAbility = '0'");
$Query->execute();
$Query->bind_result($Mod_ID,$Mod_Name);
此查询:
$Query= $DB->prepare("SELECT `ModID` from `wfabilities` WHERE `WFID`=?");
$Query->bind_param();
$Query->execute();
$Query->bind_result();
while ($Query->fetch()){ }
基本上,我想选择类型等于1,能力等于0的所有元素,这是从修改表中选择的
我还需要从wfiabilities中选择所有id,但将它们转换为位于修改中的名称,其中WFID等于另一个查询的结果
这是我目前的半工作代码
$Get_ID = $DB->prepare("SELECT ID FROM warframes WHERE Name=?");
$Get_ID->bind_param('s',$_GET['Frame']);
$Get_ID->execute();
$Get_ID->bind_result($FrameID);
$Get_ID->fetch();
$Get_ID->close();
echo $FrameID;
$WF_Abilties = $DB->prepare("SELECT ModID FROM `wfabilities` WHERE WFID=?");
$WF_Abilties->bind_param('i',$FrameID);
$WF_Abilties->execute();
$WF_Abilties->bind_result($ModID);
$Mod_IDArr = array();
while ($WF_Abilties->fetch()){
$Mod_IDArr[] = $ModID;
}
print_r($Mod_IDArr);
$Ability_Name = array();
foreach ($Mod_IDArr AS $AbilityMods){
$WF_AbName = $DB->prepare("SELECT `Name` FROM `modifications` WHERE ID=?");
$WF_AbName->bind_param('i',$AbilityMods);
$WF_AbName->execute();
$WF_AbName->bind_result($Mod_Name);
$WF_AbName->fetch();
$Ability_Name[] = $Mod_Name;
}
print_r($Ability_Name);
以下是查询:
"SELECT A.ID, A.Name,B.ModID,C.Name
FROM modifications as A
LEFT JOIN wfabilities as B ON A.ID = B.WFID
LEFT JOIN warframes as C ON C.ID = B.WFID
WHERE A.TYPE =1 AND A.WFAbility = '0' AND C.Name = ?"
见下文:
SELECT ModID,
ID,
Name
FROM modifications M
LEFT JOIN wfabilities WF
ON WF.ModID = M.ID
WHERE TYPE =1 & WFAbility = '0'
要做到这一点,你需要加入你的表,我不太确定你想做什么,所以你可能必须给我更多的信息,但这里是我的猜测
SELECT ID, Name, ModID
FROM modifications
JOIN wfabilities
ON WFID = ID
WHERE TYPE = '1'
AND WFAbility = '0'
在这个版本中,当WFID等于if ID时,我连接表。您必须准确地告诉我您的需求中应该挂接什么
要了解有关联接及其作用的更多信息,请查看此页面:
编辑:
在查看您的更大结构后,我可以看到您可以这样做:
SELECT modifications.Name FROM modifications
JOIN wfabilities on wfabilities.ModID = modifications.ID
JOIN warframes on warframes.ID = wfabilities.WFID
WHERE warframes.Name = 'the name you want'
此查询将从warframes名称中获取一组能力名称。如果您可以发布方案,我会给出更准确的答案。@dimimpou看一看我的半工作代码,它应该会解释得更多一些好的,现在我明白了。我将更新我的半工作代码,它应该会解释得更多