2016-12-17 1 views
0

Так что я имею установку в три таблицы, выглядит следующим образом ...SQL присоединиться третью таблицу

Таблица 1 - изделия reciept

ri_id | ri_name | ri_reciept 
---------------------------- 
1  | nails | 1 
2  | screws | 1 
3  | hammer | 1 

Таблица 2 - reciepts

r_id | r_name | r_mop 
----------------------- 
1 | reciept1 | 1 
2 | reciept2 | 2 
3 | reciept3 | 2 

Таблица 3 - method_of_payment

m_id | m_name 
------------- 
1 | Bank Transfer 
2 | Cash 
3 | Cheque 

Это мой SQL-код им пытаются запустить

SELECT * FROM reciept_items ri 
INNER JOIN reciepts r ON ri.ri_reciept = r.r_id 
INNER JOIN method_of_payment mop ON r.r_mop = mop.m_id 
WHERE ri_reciept = :id 

UPDATE: Последняя КУДА линия работает как следует ...

$queryRecieptItems = $dbh->prepare(" 
       SELECT * FROM reciept_items ri 
       INNER JOIN reciepts r ON ri.ri_reciept = r.r_id 
       INNER JOIN method_of_payment mop ON r.r_mop = mop.m_id 
       WHERE ri.ri_reciept = :id 
      "); 
      $queryRecieptItems->execute(array("id"=>$reciept['r_id'])); 

Я пытаюсь получить доступ к колонке «m_name» в то время как цикл по таблице 1 , любые идеи, почему вышеупомянутое не работает?

+0

Что делает последняя строка 'WHERE ri_reciept =: id' do? Привет, привет! ^^ –

+0

плохой обновление вопрос. – AndrewBramwell

+0

ha, iv только что нашел свою проблему :) и привет спасибо за предложение помощи :) – AndrewBramwell

ответ

1

Вам нужно указать префикс ri_reciept в разделе where с именем таблицы (хотя он должен работать без префикса) и передать правильный идентификатор вместо ": id", например. ниже должно работать:

SELECT * 
FROM receipt_items ri 
INNER JOIN receipts r ON ri.ri_receipt = r.r_id 
INNER JOIN method_of_payment mop ON r.r_mop = mop.m_id 
WHERE ri.ri_receipt = 1; 

Вот SQL Fiddle.

+0

Он работает без префикса –

+0

Да, это так, если нет другой таблицы с таким же именем столбца. Я обновил ответ. –

+0

Итак, это ': id' thingy не является частью синтаксиса mysql, я думаю? ^^ –

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