1

同じデータベース内の 3 つの SQL テーブルから 6 つの画像をランダムに選択するクエリがあり、誰かがその画像をクリックすると、その画像が選択されたテーブルに応じて別のページに送信したいと考えています。クエリでそれを行うには、そのランダムな画像が選択されたテーブル名を見つけたいと思います。

私のSQLクエリは

$sql="SELECT *
FROM   salehotel
UNION ALL
SELECT *
FROM   saleland
UNION ALL
SELECT *
FROM   salehouse
ORDER BY RAND()
LIMIT 6
";
$result=mysql_query($sql)or die(mysql_error());
?>
<?php
        while($row = mysql_fetch_array($result))
        {?>
    <div style="float: left; margin-left: 10px;">
        <a href="sale_house_detail.php?id=<?php echo $row['property_id'];  ?>">
            <img src=<?= '"admin/uploads/'.$row['image1'].'"'; ?> width="172px" height="149px" style='border:5px solid  #CCC' />
        </a>
    <p><?php  echo $row['Type']; ?></p>
    <p><?php  echo $row['Location']; ?></p>
  </div>

    <?php   }
    ?>
4

3 に答える 3

3

SQL でソース テーブルを示す新しいフィールドを作成します。

$sql="SELECT salehotel.*, 'salehotel' as source
FROM   salehotel
UNION ALL
SELECT saleland.*, 'saleland' as source
FROM   saleland
UNION ALL
SELECT salehouse.*, 'salehouse' as source
FROM   salehouse
ORDER BY RAND()
LIMIT 6
";

PHP は、この列を次のように表示できます。

<?php  echo $row['source']; ?>
于 2012-09-22T14:48:59.553 に答える
1

フィールドとしてはどうですか、select *, 'table_name'その列を使用して適切な場所に送信します。

于 2012-09-22T14:50:23.230 に答える
1

クエリにテーブル名を含めます。

SELECT 'salehotel' as which, sh.*
FROM   salehotel sh
UNION ALL
SELECT 'saleland' as which, sl.*
FROM   saleland sl
UNION ALL
SELECT 'salehouse' as which, sho.*
FROM   salehouse sho
ORDER BY RAND()
LIMIT 6

次に、php コードを適切に変更して、余分な列を処理します。

于 2012-09-22T14:48:51.587 に答える