2017-02-21 5 views
-1

Mein Fall ist im Grunde das: Ich habe 3 Tabellen: itemsforsale, itemsforrent, wanteditems. Jede dieser Tabellen hat dieselbe Anzahl von Spalten und denselben Namen. Ich möchte alle Daten aus diesen 3 Tabellen auswählen, wobei USERID einer ID meiner Wahl entspricht, und sie als Zeilen ausgeben. Es funktioniert nicht. Hier ist mein Code:Auswählen von Daten aus mehreren Tabellen und Drucken

$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); 

Fehler: Warnung: mysqli_fetch_array() erwartet 1 Parameter MySQLi_Result, boolean in blahblah on line 290

Ich kann es nicht richtig an die Arbeit gegeben werden. Irgendeine Hilfe?

Antwort

1

Sie können nicht SELECT * mit UNION verwenden, müssen Sie die Spaltennamen angeben. Here ‚s, was die Dokumentation sagt:

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.)

Zusätzlich anzuwenden Bestellen, müssen Sie ORDER BY außerhalb der UNION-Abfrage verwenden.

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

+0

Ich möchte alles in den Tabellen auswählen. Wie ist das gemacht? – Ali

+0

Sie können eine kommagetrennte Spaltenliste für alle SELECT-Anweisungen angeben. –

+0

Also muss ich alle Spalten anstelle von * auswählen? – Ali

Verwandte Themen