-1

I have 3 tables: itemsforsale, itemsforrent, wanteditems. Each of these tables have the same number of columns and same name too. I want to select all data from these 3 tables where USERID is equal to an id of my choice and print them as rows. It's not working. Here is my code:

$sql = "SELECT sale.propertype as propertytype,sale.description as description,sale.price as price,sale.telefone1 as telefone1,sale.telefone2 as  telefone2,sale.userid as userid,sale.propertyid as propertyid,sale.area as area,sale.dateposted as dateposted,sale.datebumped as datebumped,sale.images as images,sale.hiddentype as hiddentype,sale.pricetype as pricetype,sale.size as size FROM itemsforsale sale WHERE userid = '1'
UNION SELECT rent.propertype as propertytype,rent.description as description,rent.price as price,rent.telefone1 as telefone1,rent.telefone2 as  telefone2,rent.userid as userid,rent.propertyid as propertyid,rent.area as area,rent.dateposted as dateposted,rent.datebumped as datebumped,rent.images as images,rent.hiddentype as hiddentype,rent.pricetype as pricetype,rent.size as size FROM itemsforrent rent WHERE userid = '1'
UNION select wanted.propertype as propertytype,wanted.description as description,wanted.price as price,wanted.telefone1 as telefone1,wanted.telefone2 as  telefone2,wanted.userid as userid,wanted.propertyid as propertyid,wanted.area as area,wanted.dateposted as dateposted,wanted.datebumped as datebumped,wanted.images as images,wanted.hiddentype as hiddentype,wanted.pricetype as pricetype,wanted.size as size from itemswanted wanted WHERE userid = '1'";
$result = mysqli_query($mysqli, $sql);

Error:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in blahblah on line 290

Dharman
  • 26,923
  • 21
  • 73
  • 125
Ali
  • 23
  • 7

1 Answers1

1

You can't use SELECT * with UNION, you have to specify the column names. Here's what the documentation says:

The column names from the first SELECT statement are used as the column names for the results returned. Selected columns listed in corresponding positions of each SELECT statement should have the same data type. (For example, the first column selected by the first statement should have the same type as the first column selected by the other statements.)

Additionally, to apply Ordering, you need to use ORDER BY outside of UNION query.

To apply ORDER BY or LIMIT to an individual SELECT, place the clause inside the parentheses that enclose the SELECT

Darshan Mehta
  • 28,982
  • 9
  • 60
  • 90