从2个表中获取行

时间:2013-07-17 08:46:21

标签: c# mysql join

我有两张桌子:

tblDowntime
downtimeID - downtimeDescription
1          - dt_desc
2          - dt_desc2


tblMachineArea
areaID     - downtimeID - areaDescription
1          - 1          - area1
2          - 2          - area2

我知道停机时间描述,那么我需要做些什么才能从tblMachineArea获取相应的区域?

我可以从ID中获取它们,但我的列表框只有描述

我有INSERT this answer,但无法适应它...除非我遗漏了一些非常明显的东西......

我的另一个问题是使用什么加入...我尝试使用machineID = 1进行内连接,它返回tblMachineArea中的所有行但使用不同的machineID取决于我是否在查询中使用1或2 ....对我来说没什么意义

编辑:我运行的查询是

SELECT areaID, tblMachineArea.downtimeID, tblDowntime.downtimeDescription, areaDescription
FROM tblDowntime
INNER JOIN tblMachineArea ON tblMachineArea.downtimeID = 1;

图片:(请原谅桌面名称和字段略有不同,所以我更新了原件) enter image description here

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

您可以避免使用联接并运行两个查询。

首先获取机器的ID并将其存储为变量。然后使用该变量来获取所需的信息。

此外,您提到的链接并不使用prepredred语句,如果您可以提高安全性,最好将其用作策略。

这是我用于注册用户的PHP函数,您可以看到准备好的语句是如何构建的。

//function for registering a new user and adding their details to the database
public function register($username, $password, $email){

$time       = time();
$ip         = $_SERVER['REMOTE_ADDR'];
$emailCode = sha1($username + microtime());
$password   = sha1($password);

//prepare statement and bind values
$query  = $this->db->prepare("INSERT INTO `users` (`username`, `password`, `email`, `ip`, `time`, `emailCode`) VALUES (?, ?, ?, ?, ?, ?) ");

$query->bindValue(1, $username);
$query->bindValue(2, $password);
$query->bindValue(3, $email);
$query->bindValue(4, $ip);
$query->bindValue(5, $time);
$query->bindValue(6, $emailCode);

try{
    $query->execute();

    //function stuff here removed to save space

}catch(PDOException $e){
    die($e->getMessage());
}   
 }//end register function