2015-12-28 2 views
2

У меня есть 2 таблицы пользователей и друзей.Извлечение данных из таблицы пользователя на основе идентификатора из таблицы друзей

Пользователи Таблица поля (идентификатор, имя пользователя, пароль, имя_файла, LNAME, прозвище, и др.,)

Друзья Таблица поля (идентификатор, user_id, friend_id)

Теперь проблема я пытаюсь получить доступ данные пользователя на основе друзей friends_id.

MySQL запрос:

SELECT * 
FROM Users 
inner JOIN Friends 
ON Users.ID=Friends.Friend_ID; 

но нужны все пользовательские данные.

+0

Объясните, какие столбцы вы хотите подробно –

+0

Вы ищете себе ссылочное присоединиться, я напишу ответ для вас –

ответ

1

Вы ищете self referential join:

#app/models/user.rb 
class User < ActiveRecord::Base 
    has_and_belongs_to_many :friends, 
    class_name: "User", 
    join_table: :friends, 
    foreign_key: :user_id, 
    association_foreign_key: :friend_id 
end 

Вы должны изменить свою friends таблицу, чтобы удалить id колонку (в соответствии с has_and_belongs_to_many guidelines):

enter image description here

Это позволит вам позвонить по телефону:

#config/routes.rb 
resources :users do 
    resources :friends, only: [:create, :destroy] #-> url.com/users/:user_id/friends 
end 

#app/controllers/friends_controller.rb 
class FriendsController < ApplicationController 
    before_action :set_user 

    def create 
     @user.friends << @friend 
    end 

    def destroy 
     @user.friends.delete @friend 
    end 

    private 

    def set_user 
     @user = User.find params[:user_id] 
     @friend = User.find params[:id] 
    end 
end 
0

Попробуйте это:

SELECT U1.id AS UserId, 
     U1.username AS UserName, 
     U1.fname AS UserFName, 
     U1.lname AS UserLName, 
     U2.id AS FriendId, 
     U2.username AS FriendUserName, 
     U2.fname AS FriendFName, 
     U2.lname AS FriendLName 
FROM Friends F 
INNER JOIN Users U1 ON F.user_id = U1.id 
INNER JOIN Users U2 ON F.Friend_ID = U2.id;