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

时间:2014-05-31 22:26:43

标签: php mysql sql database

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

某些属性有多个图片 - 假设有四张照片的广告对该广告有一个唯一propspaceID(在属性表内) - 但属性图表中属于该广告的照片有与该广告一起使用的所有照片的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;
  }

...等。

第二个代码不是问题。我需要找到一种方法来获取匹配propertyImagespropspaceId)的s表格中的照片数量,然后例如{{1}有4个重复值我希望变量为4.

2 个答案:

答案 0 :(得分:1)

第二个代码就是问题。您需要将其转换为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

答案 1 :(得分:0)

试试这个:

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