将多个SQL查询和while语句组合成1个查询

时间:2018-10-24 09:12:13

标签: sql

好的,我正在尝试清理脚本的混乱情况。我对SQL查询还是比较陌生的。所以这是我到目前为止的查询。

$query = "SELECT id FROM ow_photo_album WHERE userId = '$id' ORDER by ID";
$result = $con1->query($query);

while($row = $result->fetch_row()) {
  $rows[]=$row;
  $aid = $row[0];

  $queryb = "SELECT id FROM ow_protectedphotos_passwords WHERE albumId = '$aid' AND privacy = 'password' ORDER by ID LIMIT 1";
  $checkmoderated = $con1->query($queryb);

  $row3 = $checkmoderated->fetch_row();
  $checked = $row3[0];

  if($checked > 0) { 
        $queryP = "SELECT id, hash FROM ow_photo WHERE albumId = '$aid' ORDER by ID";
        $resultP = $con1->query($queryP);

        while($rowP = $resultP->fetch_row()) {
          $rowsP[]=$rowP;
          $pid = $rowP[0];
          $hash = $rowP[1];

所以这可以满足我的需要。它会执行第一个查询并获取用户相册ID,然后使用第二个查询来查询这些ID,以查看相册是否为私人相册。最后,它接着获取私人相册(相册ID),并找到这些相册的所有照片。

然后,我需要放入照片ID和哈希列。

这是我到目前为止所拥有的。

    $query = "SELECT t.*, tt.*, tr.*
    FROM ow_photo_album AS t 
        INNER JOIN ow_protectedphotos_passwords AS tt
            ON t.id = tt.albumId
        INNER JOIN ow_photo AS tr
            ON tr.albumId = tt.albumId
    WHERE t.userId = '$id'
    ORDER BY tr.id ASC";

但是问题是当运行将多个表连接在一起的东西时,如何找到正确的行?我不确定是否可以使用fetch assoc,因为存在3个表,其中3列名为'id'

1 个答案:

答案 0 :(得分:1)

这是基本的sql,因此它可以在任何RDBMS上使用,我在这里使用JOIN是因为我假设您只想要属于相册的照片,并且因为widechar列需要设置为'password'< / p>

privacy