2017-11-21 9 views
0

私はプログラミングとSQLの初心者です。私のRailsアプリケーションでは、ユーザー、リスト、予約と呼ばれるテーブルがあります。ユーザーhas_manyリストと予約。has_many予約とbelongs_toユーザーリストはリストとユーザーに属します。3つの関連するテーブルからデータをフェッチする方法

スキーマ:

create_table "users", force: :cascade do |t| 
    t.string "email", 
    t.string "fullname", 
    t.string "phone_number" 
    end 

create_table "listings", force: :cascade do |t| 
    t.string "vehicle_type", 
    t.string "listing_name" ,    
    t.string "make",       
    t.string "model",       
    t.string "year", 
    t.integer "daily_rent", 
    t.integer "user_id" 
end 

create_table "reservations", force: :cascade do |t| 
    t.integer "user_id", 
    t.integer "total", 
    t.integer "listing_id" 
end 



mysql schema: 

    desc users; 
    id       | int(11)  | NO | PRI | NULL | auto_increment | 
email  | varchar(255) 
fullname | varchar(255) 
phone_number | varchar(255) 

desc listings; 

    id       | int(11)  | NO | PRI | NULL | auto_increment | 
    vehicle_type     | varchar(255) 
    make       | varchar(255) 
    model      | varchar(255) 
    year       | varchar(255) 
    listing_name     | varchar(255) 
    daily_rent     | int(11)  | 
    user_id      | int(11)  | YES | MUL | NULL |    | 

    desc reservations; 
    | id      | int(11)  | NO | PRI | NULL | auto_increment | 
    user_id     | int(11)  | YES | MUL | NULL | 
    total     | int(11)  | YES |  | NULL |  
    listing_id    | int(11)  | YES | MUL | NULL |  

私は、両方のは、私はシンプルでアップできたすべてのユーザー あり、クエリは次の詳細リストの所有者とゲストとして

RESERVATIONS # | LISTING OWNER NAME | LISTING OWNER EMAIL | LISTING OWNER PHONE | GUEST NAME | GUEST EMAIL | CLASS OF LISTING | YEAR OF LISTING | NIGHTLY RENTAL RATE OF LISTING| TOTAL RENTAL AMOUNT 

と予約から取得したいですゲストの電子メールと電話ですべての予約の詳細を取得し、対応する予約の詳細を一覧表示するSQLクエリ

私のクエリ:

select r.id , u.email, u.fullname ,l.listing_name,l.year,l.daily_rent,r.total from reservations r , users u ,listings l where u.id = r.user_id and l.id = r.listing_id; 

1)私はLISTINGの所有者名を抽出するためにできない午前| OWNER EMAIL | OWNER PHONEですが、私はです。ゲストを取得するにはNAME |ゲストの皆様へ|ゲストハウス。 LISTING OWNERの詳細を取得する方法は?使用して全体のクエリを記述する方法

2)

は、結合または任意の他のSQL句は、(iは、u.fullname、l.year..etcアプローチ)

3 u.emailのファンではありません)上記のすべてのデータを1つのクエリから取得できますか?

詳細が必要な場合はお知らせください。

ヘルプは非常に感謝しています。アドバンスでよろしくお願いします。

+0

あなたはあなたの答えを得ましたか?私はあなたの問題を解決するための答えを押しました。 –

答えて

1

利用インナー以下のような関連する3つのテーブルに対してクエリを結合:

SELECT r.id, u.email, u.fullname, l.listing_name, l.year, l.daily_rent, r.total 
FROM users u INNER JOIN listings l ON u.id = l.user_id INNER JOIN 
reservations r ON l.id = r.listing_id and l.user_id = r.user_id 

うまくいけば、それが正常に動作します。さらなる支援が必要な場合は、クエリを修正します。

+0

@ sureshこれを実装してあなたの考えを教えてください –

+0

質問から私の質問を見ることができます "select r.id、u.email、u.fullname、l.listing_name、l.year、l.daily_rent、予約rからのr.total、ユーザu、リストlここで、u.id = r.user_idおよびl.id = r.listing_id; あなたも同じ (r.id、u.email、u.fullname、l.listing_name、l.year、l.daily_rent、r.total)をフェッチしています。しかし、私はオーナー情報を表示したいと思います。予約ゲスト情報。 – suresh

+0

@sureshテーブルビューで所有者やゲスト情報などのサンプルデータを送信できますか?私は30分後にラップトップを利用できるようになります。 –

関連する問題