Получение информации из нескольких источников с использованием MySQLI и возможность отображать результаты

0

за последние несколько часов я пытался найти простой метод эхо-информации while из нескольких таблиц сразу. Я бы хотел сказать, что я не вытащил все мои волосы, но у меня есть.

Вот один запрос mysqli, чтобы получить следующие поля от CUSTOMER

$tid = $_SESSION['user_id']; // "id" is 1 for example

$query = "SELECT * FROM 'CUSTOMER' WHERE user_id = {$tid}";
$results = mysqli_query($dbconnection, $query);
while ($row = mysqli_fetch_array($results)) {
echo $row['user_id'] . "<br><br>";
echo $row['c_fname'] . "<br>";
echo $row['c_sname'] . "<br>";
};

Вот еще один запрос mysqli, чтобы получить следующие поля из SALE

$query = "SELECT * FROM 'SALE' WHERE user_id = {$tid}";
$results = mysqli_query($dbconnection, $query);
while ($row = mysqli_fetch_array($results)) {
echo $row['s_date'] . "<br>";
echo $row['s_total'] . "<br>";
};

Может кто-нибудь, возможно, покажет мне, как я могу получить обе эти таблицы в одном запросе, чтобы можно было повторять эхо-данные обеих таблиц одновременно, а не отдельно. Я не суетился, как это делается, до тех пор, пока он получает все из обеих таблиц для эхо-цели, это хорошо.

Теги:
database
mysqli

3 ответа

0
Лучший ответ

Вы можете сделать это, используя LEFT JOIN как это.

SELECT column_name(s)
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name;

И это ваш код.

$query = "SELECT * FROM 'CUSTOMER' LEFT JOIN 'SALE' ON 'SALE'.user_id='CUSTOMER'.user_id WHERE 'SALE'.user_id={$tid}";
$results = mysqli_query($dbconnection, $query);
while ($row = mysqli_fetch_array($results)) {
    echo $row['user_id'] . "<br><br>";
    echo $row['c_fname'] . "<br>";
    echo $row['c_sname'] . "<br>";
    echo $row['s_date'] . "<br>";
    echo $row['s_total'] . "<br>";
}

Для получения дополнительной информации прочтите это, https://www.w3schools.com/sql/sql_join_left.asp. Надеюсь, это поможет.

РЕДАКТИРОВАНИЕ

Это для объединения трех таблиц,

SELECT column_name(s)
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name;
LEFT JOIN table3 ON table1.column_name = table3.column_name;

В вашем коде.

SELECT * FROM 'CUSTOMER'
LEFT JOIN 'SALE' ON 'CUSTOMER'.user_id = 'SALE'.user_id
LEFT JOIN 'PRODUCTS' ON 'CUSTOMER'.user_id = 'PRODUCTS'.user_id
WHERE 'SALE'.user_id={$tid};

Как переменная.

$query = "SELECT * FROM 'CUSTOMER' LEFT JOIN 'SALE' ON 'CUSTOMER'.user_id = 'SALE'.user_id LEFT JOIN 'PRODUCTS' ON 'CUSTOMER'.user_id = 'PRODUCTS'.user_id WHERE 'SALE'.user_id={$tid}";
  • 0
    Ваш код, кажется, дает мне сплошную белую страницу.
  • 0
    Ооо, я забыл ; в $query переменной $query . попробуйте и скажите мне, если есть какие-либо другие проблемы.
Показать ещё 6 комментариев
0

Вы можете использовать следующий код и помочь решить проблему Ur

$query = "SELECT C.*,S.* FROM CUSTOMER C,SALES S 
WHERE C.user_id={$tid}
and C.user_id=S.user_id;
while ($row = mysqli_fetch_array($results)) {
echo $row['C.user_id'] . "<br><br>";
echo $row['C.c_fname'] . "<br>";
echo $row['C.c_sname'] . "<br>";
echo $row['S.s_date'] . "<br>";
echo $row['S.s_total'] . "<br>";
};
0

Вы можете просто присоединиться к таблицам, чтобы получить ожидаемый результат, как показано ниже.

$query = "SELECT c.user_id, c.c_fname, c.c_sname, s.s_date, s.s_total FROM 'CUSTOMER' AS c INNER JOIN 'SALE' AS s ON c.user_id = s.user_id WHERE c.user_id = {$tid}";

Пример подключения к 3 таблицам

$query = "SELECT *
FROM 'CUSTOMER' AS c
INNER JOIN 'SALE' AS s ON c.user_id = s.user_id
INNER JOIN 'PRODUCTS' AS p ON p.product_id = s.product_id
WHERE c.user_id = {$tid}";
  • 0
    Ваш код, кажется, специально нацелен на элементы в таблице. Я ищу выбрать * специально.
  • 0
    Вы можете использовать * также, мой один только пример
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню