繁体   English   中英

使用另一个表中的信息从表中获取内容

[英]Fetching something from a table using information from another table

这是针对房地产网站的-它们显示了存储在数据库中的数千个广告-遗憾的是,照片和广告存储在数据库的两个不同表中。 有关属性的信息位于称为属性的表下-图像存储在名为propertyImages的表中-它们的共同点是其propspaceId这就是它们如何链接的方式。

某些属性包含一张以上的图片-假设一个包含四张照片的广告在该广告中具有一个唯一的propspaceID (在属性表中)-但是在propertyImages表中属于该广告的照片具有该ID的所有照片放那个广告。

基本上,所有广告都有排名号码。 这个排名数字由不同的因素组成,我已经能够完成这项工作。 但是,其中一个因素是每个广告的图片数量-旧的程序员编写了以下代码:

$property['totalImages'] = mysql_num_rows(mysql_query("SELECT * FROM `propertyImages` WHERE propspaceId=".$property['propspaceId']));

我似乎无法理解这一点,或者写一个新的。 此代码无效。 然后,在随后的代码中,当我编写条件时,我编写了这样的内容。

switch($property['totalImages']){
      case $property['totalImages'] >= 1 :
          $rank+=100;
          break;
  }

..等等。

第二个代码不是问题。 我需要找到一种方法来获取具有匹配propspaceIds )的propertyImages表中的照片数量,然后例如,如果propspaceId = 45666有4个重复出现的值,我希望该变量为4。

第二个代码就是问题所在。 您需要将其转换为if或执行以下操作:

switch(true) {

      case ($property['totalImages'] >= 1):
          $rank += 100;
          break;
}

在您的switch您将$property['totalImages']的整数值与$property['totalImages'] >= 1的布尔结果进行比较。

要使用if ,例如:

if($property['totalImages'] >= 1) {
          $rank += 100;
}
elseif($property['totalImages'] == 0) {
          //rank = something else
}
//other stuff, you didn't show more than 1 condition

尝试这个:

select count(*) as number_photos from propertyImages where propspaceId = ?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM