PDO выбрать несколько таблиц с предложением где - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть 4 идентичные таблицы с одинаковыми именами строк с различными значениями. Я отправил код $ _GET ['urun_barkod'] с другой страницы, поэтому я пытаюсь показать сопоставленную строку на 2-й странице с подробной информацией о строке.

$barko=$_GET['barkod'];
$urunsor=$db->prepare("SELECT * FROM kanyon UNION ALL SELECT * FROM zorlu UNION ALL SELECT * FROM 
tesvikiye UNION ALL SELECT * FROM citys where urun_barkod=:barkod");
$urunsor->execute(array(
    'barkod' => $barko
));
$uruncek=$urunsor->fetch(PDO::FETCH_ASSOC);

Но я не могу получить результат правильно. Просто хотел показать подходящую строку баркода на моей второй странице с подробной информацией.

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 01 февраля 2020

Ваша проблема в том, что пункт «Где» работает только с последним. Выберите

. Поэтому вам нужно заключить объединение в капсулу, а затем выполнить пункт «Где»

Как

SELECT 
  * 
FROM
(SELECT * FROM kanyon UNION ALL SELECT * FROM zorlu UNION ALL SELECT * FROM 
tesvikiye UNION ALL SELECT * FROM citys) a
 where urun_barkod=1

Проблема в том, что вы собираете все данные из всех таблиц и объединяете их, и, наконец, затем удаляете все ненужные строки, что не имеет никакого смысла, потому что это требует времени и ресурсов.

Так что лучше это

SELECT * FROM kanyon  where urun_barkod=1
UNION ALL SELECT * FROM zorlu  where urun_barkod=1 
UNION ALL SELECT * FROM tesvikiye  where urun_barkod=1
UNION ALL SELECT * FROM citys where urun_barkod=1;

, который только объединяет фактические требуемые строки.

По моему мнению, я бы также добавил столбец в выборках для идентификации таблиц, но это я.

0 голосов
/ 01 февраля 2020

Если идентификаторы идентичны, пожалуйста, попробуйте:

"
SELECT     *
FROM    ((kanyon INNER JOIN zorlu ON kanyon.id = zorlu.id)
                INNER JOIN tesvikiye ON kanyon.id = tesvikiye.id)
        INNER JOIN citys ON kanyon.id = citys.id        

where urun_barkod=:barkod
"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...