2015-12-21 42 views
5

我正在以10美元的成績獲得研究所。但是我希望獲得具有GATE課程名稱的研究所。我怎樣才能做到這一點? course_records在學院有一個外鍵院校ID。我無法加入這些表格。 任何形式的幫助將不勝感激。使用外鍵加入表格

$result=$conn->query("SELECT *, (6371 * acos(cos(radians($user_latitude)) * cos(radians(latitude)) * cos(radians(longitude) - radians($user_longitude)) + sin(radians($user_latitude)) * sin(radians(latitude)))) AS distance FROM institutes HAVING distance < 10 ORDER BY distance LIMIT 0 , 10 "); 

mysql> select * from institutes;

+--------------+-------------------+---------------------+----------------+----------------------------------+-------------+--------+----------+-----------+ 
| institute_id | name    | email    | contact_number | address       | telephone | tut_id | latitude | longitude | 
+--------------+-------------------+---------------------+----------------+----------------------------------+-------------+--------+----------+-----------+ 
|   23 | Dhananjay Classes | [email protected] | 9999888877  | Palam dabri Road,Mahavir Enclave | 011-1234567 |  11 | 28.5892 | 77.0858 | 
|   24 | ffe    | [email protected]    | 323232   |         |    |  11 | 28.5667 | 77.2833 | 
+--------------+-------------------+---------------------+----------------+----------------------------------+-------------+--------+----------+-----------+ 

mysql> select * from course_records;

+-----------+------+--------------+-------+--------------+--------------------------+--------------------+---------------+-----------+---------+--------------+ 
| course_id | name | subject  | fees | num_students | num_students_per_teacher | month_of_admission | num_of_trials | commision | created | institute_id | 
+-----------+------+--------------+-------+--------------+--------------------------+--------------------+---------------+-----------+---------+--------------+ 
|   1 | GATE | CSE   | 10000 | 110   | 20      | January   | 3    | yes  | NULL |   23 | 
|   2 | NDA | all_subjects | 7000 | 50   | 20      | April    | 3    | yes  | NULL |   23 | 
|   3 | 12th | Math   | 2  | 90   | 20      |     | 2    |   | NULL |   23 | 
+-----------+------+--------------+-------+--------------+--------------------------+--------------------+---------------+-----------+---------+--------------+ 

回答

3

嘗試用:

$result=$conn->query("SELECT 
i.name as inst_name, cr.name as course_name, 
(6371 * acos(cos(radians($user_latitude)) * cos(radians(i.latitude)) * cos(radians(i.longitude) - radians($user_longitude)) + sin(radians($user_latitude)) * sin(radians(i.latitude)))) AS distance 
FROM 
institutes i 
join course_records cr on i.institute_id = cr.institute_id 
where cr.name = 'GATE' 
HAVING 
distance < 10 ORDER BY distance LIMIT 0 , 10 "); 

,你可以從兩個表作爲選擇字段通過使用像cr.subject表的別名從course_records表當然主題添加更多領域。

+0

加入逗號後代碼工作'SELECT i.name as inst_name,cr.name as course_name' – tarun14110

+0

哦,是的,讓我更新我的答案 –

3

我不確定你如何計算距離,我不會詳細討論。請仔細檢查你的公式。假設你糾正它,嘗試這樣的事情。這裏latitudelongitude是硬編碼的,但您可以按照您想要的方式將其更改爲php。另外我使用的距離是50

select * from 
(
     SELECT 
     i.*, c.name as course_name, 
     (6371 * acos(cos(radians(28.5892)) * cos(radians(i.latitude)) 
      * cos(radians(i.longitude) - radians(77.0858)) + sin(radians(28.5892)) 
      * sin(radians(i.latitude)))) 
     AS distance 
     FROM 
     institutes i 
     inner join course_records c on i.institute_id = c.institute_id 
) as dist 
where dist.distance <50 
and dist.course_name='GATE' 

View SQLFiddle demo here

http://sqlfiddle.com/#!9/1a27f/10

2
$result=$conn->query("(SELECT institutes.*, (6371 * acos(cos(radians($user_latitude)) * cos(radians(institutes.latitude)) * cos(radians(institutes.longitude) - radians($user_longitude)) + sin(radians($user_latitude)) * sin(radians(institutes.latitude)))) AS distance FROM institutes join on institutes.institute_id=course_records.institute_id) as Table1 HAVING Table1.distance < 10 and Table1.course_name like '%GATE%' ORDER BY Table1.distance LIMIT 0 , 10 "); 

只是上面, 希望這個作品爲您更換你的代碼。

+0

謝謝,幫了很多 – tarun14110