2016-03-16 3 views
0

У меня странный вопрос. У меня есть три таблицы: - TABLE_A с колоннами (ID, product_id, customer_id, местонахождение, телефон) - TABLE_B с колоннами (ID, product_id, PRODUCT_NAME) - table_c с колоннами (ID, customer_id, CUSTOMER_NAME)PHP + mysql - левое соединение - три таблицы

Что Я бы хотел отобразить таблицу со следующим содержанием: table_a.id, имя_продукта, имя_пользователя, местоположение, телефон

Так что я предполагаю, что как-то я должен использовать left join table_b, table_c с table_a.

Я попробовал несколько подходов, как:

SELECT*FROM table_a INNER JOIN table_b, table_c 
ON table_a.product_id = table_b.product_id 
ON table_a.customer_id = table_c.customer_id 

Я хочу, чтобы избежать дубликатов product_id/Customer_ID в итоговой таблице ..

ответ

1

Вы можете получить все другие поля, но какой идентификатор вы пытаетесь получить? Все 3 таблицы имеют поле id.

Предполагая, что вы можете взять идентификатор первой таблицы:

SELECT table_a.id, table_b.product_name as product_name, table_c.customer_name as customer_name, table_a.location as location, table_a.phone as phone 

FROM table_a INNER JOIN table_b 

ON table_a.product_id = table_b.product_id 

INNER JOIN table_c 

ON table_a.customer_id = table_c.customer_id 

Надеется, что это помогает.

Мир! xD

+0

Это странно. Я использовал вашу схему - вот запрос: codepad.org/Z7HY5LEn, но когда я пытаюсь выполнить этот запрос, даже через phpmyadmin Im получает ошибку 1064 - он указывает, что на последних трех строках появляется ошибка. Почему это? –

+0

Похоже, я сделал опечатку. Позвольте мне изменить его. :) –

2

Вы должны присоединиться к вательно TABLE_A с TABLE_B получить PRODUCT_NAME, затем table_a с таблицей_c, чтобы получить имя_пользователя. Вы можете попробовать:

SELECT table_a.id, product_name, customer_name, location, phone 
FROM table_a 
    INNER JOIN table_b ON table_a.product_id = table_b.product_id 
    INNER JOIN table_c ON table_a.customer_id = table_c.customer_id 
2

Он может помочь указать имя таблицы до атрибута таблицы в вашем заявлении select. Надеюсь это поможет!

select 
    table_a.id, 
    table_b.product_name, 
    table_c.customer_name, 
    table_a.location, 
    table_a.phone 
from table_a 
left join table_b 
    on table_a.product_id = table_b.product_id 
left join table_c 
    on table_a.customer_id = table_c.customer_id 
+0

знаете ли вы какой-либо определенный класс или сценарий PHP, который может использовать PDO для отображения большого количества данных? каждый раз, когда я делаю это, я получаю 500 ошибок. Что более странно - мой код: http://codepad.org/7HGBxmkq, используемый в phpmyadmin - создайте таблицу с повторяющимися полями. моя строка с ID # 1, скопирована около 150 раз? –

+0

Я использую Laravel для большинства моих проектов, поэтому в основном использую красноречивое для любого взаимодействия с БД - я считаю, что он использует PDO. https://laravel.com/docs/5.2/eloquent Если вы получаете ошибку 500, вероятно, из-за таймаута, попробуйте ограничить свой запрос до 10 строк, чтобы увидеть, работает ли он, и если он изменит ваши настройки php на разрешите более 30 секунд для выполнения запроса. В любом случае вы можете рассмотреть возможность разбиения на страницы результатов вместо выплескивания огромного объема данных на экран. – haakym

+0

Лучше задать другой вопрос, если у вас возникнут другие проблемы с другим запросом – haakym

Смежные вопросы