我有两个像这样结构的表
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :facebook_id
t.string :phone_number
t.timestamps
end
end
end
class CreateNumbers < ActiveRecord::Migration
def change
create_table :numbers do |t|
t.string :number, :unique => true
t.timestamps
end
end
end
我需要编写一个从数字表中获取数字的查询 如果没有具有该特定号码的用户,或者如果Facebook_id为空,则需要具有该号码的用户,然后继续并获取该号码
这是我到目前为止所拥有的内容,但如果有一个用户使用该号码,它似乎只会抓取数字
numbers = Number.joins('left join users on numbers.number = users.phone_number').where('users.facebook_id LIKE ? and numbers.number is not null','')
答案 0 :(得分:1)
您希望将搜索条件放在LEFT JOIN ... ON
子句中。在WHERE
子句中提及LEFT JOIN
中属于右侧表格的列会将其转换为INNER JOIN
。
试试这个:
'left join users on numbers.number = users.phone_number AND users.phone_number IS NULL'
获取您遗失的电话号码标准。
我不确定我理解你的空白脸谱ID标准。但你可以试试这个
'left join users on numbers.number = users.phone_number
AND ( users.phone_number IS NULL
OR users.facebook_id IS NULL
OR LENGTH(users.facebook_id) = 0'