inner join 查詢語法 (mysql)

edited 十月 2013 in 資料庫
有問題的語法:
select count(
prom_basic.prom_id) as nums
from prom_dtl , prom_basic inner join prom_column on prom_column.item_no = prom_dtl.prom_no
and prom_column.group_no = '藥物'
where prom_basic.prom_id = prom_dtl.prom_id
and prom_basic.status = '1'
and prom_basic.prom_date
between '0971001'
and '0971031'

錯誤訊息 :
1054-Unknown column 'prom_dtl.prom_no' in 'on clause'

但確認資料庫沒問題,且語法改成ㄧ般的join是OK的:
select count(
prom_basic.prom_id) as nums
from prom_dtl , prom_basic , prom_column
where prom_basic.prom_id = prom_dtl.prom_id
and prom_dtl.prom_no = prom_column.item_no
and prom_column.group_no = '藥物'
and prom_basic.status = '1'
and prom_basic.prom_date
between '0971001'
and '0971031'

請問有前輩知道是什麼問題嗎??
麻煩告知了,謝謝。

ps.inner join 語法不是我寫的,備分完重開機後這語法便出問題,
但是負責人今天不在,所以我得查出來,不然我也不能亂改呀....

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=3679

評論

  • edited 十月 2008
    哈,同事亂試試出來了,不過是很奇怪的答案:

    因為在這裡加上括號就解決了
    from ( prom_dtl , prom_basic)


    但還是不知道為什麼,大概是MYSQL語法瘋了吧,哈!!
    謝謝大家囉。
  • edited 二月 2009
    這個是對資料庫語法使用的問題有關

    請樓主跟您的朋友說

    from table_a, table_b, table_c

    上面的join方式,預設都是inner join

    但你要寫inner join,就要先把前兩張表先join起來

    from table_a inner join table_b
    on table_a.key = table_b.key

    的動作做完以後,再把第三個表(table_c)對前面的結果作join

    前面沒有結果,後面怎麼join ?

    對於join的精神,樓主可以請對方試著多畫畫關聯表,或是多使用關聯功能,語法結構就會比較不陌生了
Sign In or Register to comment.