Как я могу выполнить два запроса на три таблицы и вывести результат столбца в одной таблице - PullRequest
0 голосов
/ 30 января 2019

Я попытался придумать лучший заголовок, и мне хотелось бы, чтобы был чат, к которому я мог бы присоединиться, чтобы лучше обсудить, что я имею в виду.Во всяком случае, у меня есть цикл while, который извлекает данные из двух таблиц и правильно отображает результаты.У меня есть третья таблица, в которой я хочу отобразить имя результата в зависимости от того, какой идентификатор выходит в цикле ... Посмотрите, что я имею в виду, это не имеет смысла.

Вот запросы ицикл:

                try {
                $stmt = $Conn->prepare("SELECT * FROM wn_trailer "
                        . "INNER JOIN wn_trailer_history ON wn_trailer.id = wn_trailer_history.trailer_id "
                        . "ORDER BY trailer_number ASC");
                $stmt->execute();

                $stmt2 = $Conn->prepare("SELECT status_name FROM wn_trailer_status WHERE status_id = :status");
                $stmt2->execute([":status" => $row[1]]);

                while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {

                    $data = "<tr>\r\n<td><a href='view-trailer.php?id=$row[0]'>" . $row[1] . "</a></td>\r\n"
                            . "<td>" . $row[1] . "</td>\r\n"
                            . "<td>" . $row[16] . "</td>\r\n"
                            . "<td><a href='https://www.google.com/maps/search/?api=1&query=$row[3],$row[4]' target='_blank'>View Map</a></td>\r\n"
                            . "</tr>\r\n";
                    print $data;
                }
            } catch (PDOException $e) {
                print $e->getMessage();
            }

$ stmt2 - это второй запрос к третьей таблице.Поскольку цикл выполняется, я хочу, чтобы он сравнивал результат первого запроса и, если он находит идентификатор, возвращает значение в столбце.Запрос хорош, я проверил его в журнале mysql, но он не возвращает значение.

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

tldr; Мой вопрос заключается в том, как я могу сравнить результаты первого запроса свторой запрос и отобразить результат столбца, или я должен использовать функцию выбора случая для обработки рабочей нагрузки?

1 Ответ

0 голосов
/ 30 января 2019

при условии, что значение состояния возвращается в первой таблице формы запроса wn_trailer, вы можете разрешить оба запроса, добавив внутреннее объединение

 $stmt = $Conn->prepare("SELECT * 
             FROM wn_trailer  
             INNER JOIN wn_trailer_history ON wn_trailer.id = wn_trailer_history.trailer_id 
             INNER JOIN wn_trailer_status  ON wn_trailer_status.status_id = wn_trailer.status
             ORDER BY trailer_number ASC");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...