2012-11-06 47 views
1

我有以下SQL語句:SQL連接從源表

select distinct 
    u.id, 
    v1.code, 
    v2.code, 
    a1.phone, 
    a1.phone1, 
    SUM(o1.totalprice) as SALES 
    SUM(ot4.numbers) as NUMBERS 
from 
    users u, 
    orders o2 
inner join values v1 on v1.pk = u.gender 
inner join values v2 on v2.pk = u.egistration 
inner join addresses a1 on a1.owner = u.pk 
inner join orders o1 on o1.userpk = u.pk 
inner join orderthings ot4 on ot4.orderpk = o2.pk 
where 
    u.cccustomer = 1 
and 
    v2.code = 'REGISTERED' 
group by 
    u.id, 
    v1.code, 
    v2.code, 
    a1.phone, 
    a1.phone1 
order by 
    id; 

基本上訂單的加入不工作,但我需要上沒有關係的兩個表的附加關係給用戶你。我怎麼能做到這一點?根據您的sample SQL Fiddle,如果您的表不涉及到另一個,那麼你可以使用一個CROSS JOIN加入他們

+0

爲了澄清:我認爲已經在第二個表中是錯誤的。我不知道如何從兩個表中添加一個與用戶無關的連接。 –

+0

你沒有。要獲得笛卡爾產品或每個結果行的所有用戶,請在沒有任何ON引用的情況下列出from子句中的表。 – Beth

+0

@BenSchnitzel你可以發佈表結構和樣本數據以及期望的結果嗎?或者更好的創建一個帶有工作數據模型的sql小提琴。 – Taryn

回答

1

,與此類似:

select u.Email, 
    v1.String Gender, 
    v2.String Title, 
    o.a_string, 
    o.o_string 
from users u 
inner join value v1 
    on u.Gender = v1.PK 
inner join value v2 
    on u.Title = v2.PK 
cross join 
(
    select a.PK, a.string a_string, o.string o_string 
    from another a 
    inner join other o 
    on a.PK = o.PK 
) o; 

SQL Fiddle with demo

+0

非常感謝! –