2014-02-10 5 views
0

Привет У меня есть две таблицы, одна называется project_table, а другая называется инвестиционной таблицей.Присоединиться к двум таблицам

project_table:

project_id    
project_name 
project_location   
project_phase   
project_capital  
project_total 
project_notes 
project_file 

инвестиции таблица:

id 
project_id 
investor_id  
investment 

пользователя стол:

user_id 
user_name 
user_email 
user_pass 
user_role 
user_phone 

Я STO кольцо инвестиции от пользователя в таблице (инвестиции) и связывающую эту таблицу проецировать таблицу с помощью project_id

Что мне нужно: Показать инвестируемый проект данных от пользователя. Значит, если пользователь вводит логин в админ, им нужно только увидеть, что они проект, который они вложили, Не нужно отображать все проекты. У пользователя может быть возможность инвестировать в несколько проектов. Итак, в основном, если Джеймс зарегистрирован для администратора, ему нужен только проект, у которого есть инвестиции от Джеймса.

Моя функция для этого:

public function list_all_projects_by_userid ($uid,$investor){ 

    $investors = DB::fetch('SELECT * FROM project_table JOIN investment on project_table.project_id = investment.project_id; ORDER BY project_id DESC'); 
    return $investors; 


     } 

Буц ее не работает, пожалуйста, помогите мне. Я использую расширенный класс PDO, который имеет метод выборки.

ответ

0

В запросе есть синтаксическая ошибка. Pl попробуйте следующее:

SELECT * FROM project_table JOIN investment on project_table.project_id = investment.project_id ORDER BY project_id DESC; 

Если ваш критерий присоединения не встречается, pl подробно объяснит вашу функциональность.

+0

Его взгляд systax хорошо сейчас. Thak вам, но не получить то, что я требовал. – BANNA

+0

Да. Я понял то же самое. Ваш investor_id в таблице «investment» представляет собой внешний ключ для user_id в таблице «user». В этом случае вам придется попробовать что-то вроде: SELECT * FROM project_table JOIN инвестиций на project_table.project_id = investment.project_id LEFT OUTER JOIN user ON user.user_id = investment.investor_id ORDER BY project_id DESC; – Neels

+0

@ Я хочу получить весь проект, который в настоящий момент зарегистрировал пользователь. Я передаю две переменные этой функции, но я не знаю, как это сделать: возможно ли это, передав только одно значение? Я знаю текущий зарегистрированный идентификатор пользователя list_all_projects_by_userid ($ uid)? – BANNA

0

Вам нужно поставить ';' за весь запрос:

SELECT * 
FROM project_table JOIN investment 
    on project_table.project_id = investment.project_id 
ORDER BY project_id DESC; 
0

так invester является пользователем поэтому функции не нужны два аргумента, поэтому я держал это просто

public function list_all_projects_by_userid ($uid){ 
$sql="select * from investment_table Inner Join project_table 
on project_table.project_id=investment_table.project_id 
where investment_table='".$uid."' ORDER BY investment_table.project_id DESC"; 
$investors = DB::fetch($sql); 
return $investors; 
} 
+0

Благодарим вас, но его ошибка: Нарушение ограничения целостности: 1052 Столбец 'project_id' в порядке предложения неоднозначен ' – BANNA

+0

@ user3292518 см. Обновление .. –

1

Посмотрите на это!

SELECT * FROM project_table t JOIN investment i on t.project_id = i.project_id where t.project_name='john' ORDER BY project_id DESC; 

Вы разместили ";" до ORDER BY, который является неправильным. Я предполагаю, что вышеупомянутый запрос выполнит трюк.

вы должны пройти

PROJECT_NAME = 'Джон'

согласно вашему требованию.

Для этого вам необходимо установить соединение между usertable и project_table.

0

В вашей функции вы помещаете половину двоеточия перед порядком.

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

общественная функция list_all_projects_by_userid ($ UID, $ инвестора) {

$investors = DB::fetch('select * from investment_table, project_table where project_table.project_id=investment_table.project_id ORDER BY investment_table.project_id DESC'); 

возвращение $ инвесторов; }

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