Вопрос

i'm having a problem with a code i've written to fetch data from 3 tables, its a tourism website, and i would like the user to search across three tables :

  • hotel [HNo,Name,Description,Location,Address,Price]
  • resturant [RNo,Name,Description,Location,Address,Price]
  • parks [ParkNo,Location,Description,Address]

my select statement is as follows :

SELECT hotel.HNo
      ,hotel.Name
      ,hotel.Description
      ,hotel.Location
      ,hotel.Address
      ,hotel.Price
      ,restaurant.RNo
      ,restaurant.Name
      ,restaurant.Description
      ,restaurant.Location
      ,restaurant.Address
      ,restaurant.Price
      ,parks.ParkNo
      ,parks.Location
      ,parks.Description
      ,parks.Address
FROM hotel, restaurant, parks 
WHERE hotel.Name LIKE '%".$keyword."%' 
   OR parks.Location LIKE '%".$keyword."%'
   OR restaurant.Name LIKE '%".$keyword."%'

Now the problem is, after fetching the data using while($data = mysql_fetch_array($sql)) I'm not able to identify whether i'm printing data from hotel, restaurant or parks table, its necessary since parks don't have names, and user can make a reservation if its a hotel.

Thank you in advance

Это было полезно?

Решение

You can assign aliases to columns in your SELECT clause to give them distinct names in your result.

E.g.

SELECT hotel.HNo, hotel.Name AS hotelName, hotel.Description AS hotelDesc, hotel.Location AS hotelLocation

and then you refer to these aliases when working with the rows contained in your query result. E.g.

while($data = mysql_fetch_array($sql)) {
   echo $data['hotelName']; 
   ...
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top