У меня есть этот mysql-запрос:
SELECT R.*, A.* FROM buy A JOIN return R ON A.id_buyer = R.id_buyer WHERE A.id_acheter = '$id' and R.stats in (5, 4) and A.stats in (14, 15) ORDER BY R.id, A.id
Прежде всего, когда я использую этот запрос, я получаю дублированные строки … Я использовал GROUP BY для решения проблемы, но ничего не сделал.
И здесь примеры данных:
КУПИТЬ Таблица:
> +-------------+---------------+-----------+-------------+-------------+ > |id | id_buyer | product | title | stats | > +-------------+---------------+-----------+-------------+-------------+ > |1 | 12 | Amazon | Shoes | 4 | > +-------------+---------------+-----------+-------------+-------------+ > |2 | 12 | Amazon | Glasses | 5 | > +-------------+---------------+-----------+-------------+-------------+ > |3 | 16 | Ebay | Glasses | 2 | > +-------------+---------------+-----------+-------------+-------------+
RETURN Таблица:
> +-------------+---------------+-----------+-------------+-------------+ > |id | id_buyer | Message | Date | stats | > +-------------+---------------+-----------+-------------+-------------+ > |1 | 12 | Hi | 02/05/16 | 14 | > +-------------+---------------+-----------+-------------+-------------+ > |2 | 12 | What? | 02/05/16 | 0 | > +-------------+---------------+-----------+-------------+-------------+ > |3 | 12 | Yes | 02/05/16 | 15 | > +-------------+---------------+-----------+-------------+-------------+
Желаемые результаты:
Поскольку у меня нет одинаковых столбцов в таблицах, я не знаю, как я могу управлять своим PHP-кодом, чтобы показать этот результат?
> +-------------+---------------+-----------+-------------+-------------+ > |1 | 12 | Hi | 02/05/16 | 14 | > +-------------+---------------+-----------+-------------+-------------+ > +-------------+---------------+-----------+-------------+-------------+ > |3 | 12 | Yes | 02/05/16 | 15 | > +-------------+---------------+-----------+-------------+-------------+ > +-------------+---------------+-----------+-------------+-------------+ > |1 | 12 | Amazon | Shoes | 4 | > +-------------+---------------+-----------+-------------+-------------+ > +-------------+---------------+-----------+-------------+-------------+ > |2 | 12 | Amazon | Glasses | 5 | > +-------------+---------------+-----------+-------------+-------------+
Вот что я сделал, но без успеха:
<table> <?php $id = "12"; $req = $mysqli->query("SELECT R.*, A.*, R.id as id_reservation, A.id as id_buy FROM buy A JOIN return R ON A.id_buyer = R.id_buyer WHERE A.id_acheter = '$id' and R.stats in (5, 4) and A.stats in (14, 15) ORDER BY R.id, A.id"); While($rows = mysqli_fetch_array($req)) { $id_buyer = $rows["id_buyer"]; if(isset($rows["id_reservation"])) { $id = $rows["id_reservation"]; $result1 = $rows["product"]; $result2 = $rows["title"]; } else { $id = $rows["id_buy"]; $result1 = $rows["message"]; $result2 = $rows["date"]; } $stats = $rows["stats"]; ?> <tr> <td><?=$id?></td> <td><?=$id_buyer?></td> <td><?=$result1?></td> <td><?=$result2?></td> <td><?=$stats?></td> </tr> <?php } ?> </table>
EDIT (UNION approch):
SELECT R.'from return' , R.`id` , R.`id_buyer` , null as product , null as title , R.`id_seller` as id_seller , R-`message` , R.`stats` , R.`date` , R.`update` FROM return R WHERE R.id_buyer = '$user' AND (R.stats='1' OR R.stats='3') UNION ALL SELECT A.'from buy' , A.`id` , A.`id_buyer` , A.`product` , A.`title` , null , null , A.`stats` , A.`date` , null FROM buy A WHERE A.id_buyer = '$user' AND A.stats='4' ORDER BY R.date DESC LIMIT $from , 20
Здесь у нас есть UNION
approch, но только столбцы первого SELECT
который работает, второй столбцы SELECT
не работают.
Я все еще получаю эту ошибку только для столбцов второго выбора: Notice: Undefined index: product in ...