2017-12-14 23 views
1

2つのテーブルを結合しようとしています。表1はaccountと呼ばれ、account_id、fname、lname、pictureで構成され、表2はfriendpendingと呼ばれ、account_id、friend_id、messageで構成されます。私はaccount_idを渡すときにfriend_idという名前を返すために必要なユーザー名を返すというプログラムを作っています。SQL結合が間違った結果を返す

これは私がこれまでにしようとしているものです:

SELECT account.fname, account.lname, account.picture 
from account 
INNER JOIN friendpending ON account.account_id = friendpending.account_id 
WHERE friendpending.account_id = p_account_id; 
+1

はこのような何かを試してみてください?それはドル記号で始まるが、好ましくはパラメータとして提供されるべきである。 –

+0

また、必要なすべての情報がアカウントテーブルにある場合、friendpendingテーブルが必要なのはなぜですか? –

+0

p_account_idは、ストアドプロシージャを使用してこれを行う際に渡されるmysqlのパラメータです。 – Blue

答えて

1

をあなたはfriendpendingテーブルから友人の名前をしたい場合、あなたはそのフィールド(またはフィールド)を選択する必要があります。

SELECT friendpending.name, 
    account.fname, account.lname, account.picture 
FROM account INNER JOIN friendpending ON account.account_id = friendpending.account_id 
WHERE friendpending.account_id = p_account_id; 

SELECT friendpending.fname, friendpending.lname, account.picture 
FROM account INNER JOIN friendpending ON account.account_id = friendpending.account_id 
WHERE friendpending.account_id = p_account_id; 

または、下記のコメントに基づき、ON account.account_id = friendpending.friend_id

+0

友人の保留テーブルには名前列がありません。私はfriend_idを取得し、アカウントテーブルのaccount_idと一致させて名前を取得しようとしています。 – Blue

+0

現在account_idとaccount_idが一致していますので、friend_idと一致するように文を調整してください。 –

+0

私は今それを働かせてくれてありがとう。 – Blue

0

返されたいものは、クエリのSELECT部分​​に含める必要があります。 PHPの変数をp_account_id` `です

SELECT friendpending.friend_id, 
friendpending.name, 
account.fname, 
account.lname, 
account.picture 
FROM account 
INNER JOIN friendpending ON account.account_id = friendpending.account_id 
WHERE friendpending.account_id = p_account_id; 
+1

ありがとうございました。 – Blue

関連する問題