私はこの情報フォームを2つのテーブルを呼び出すクエリがあります。mysqlクエリ2つのテーブルから2行
DB::get("SELECT friends. * , (SELECT `login` FROM `users` WHERE `users`.`id` = friends.`user_id`) AS `login` FROM `friends` WHERE `id_user`='" . $this->user['id'] . "' ORDER BY `id` DESC LIMIT ")
ユーザーが友達リストのユーザー名を表示している場合は、ユーザー名とアバターを取得したいと考えています。アバター行はavatar
です。 私はこれを試してみます。
DB::get("SELECT friends. * , (SELECT `login`, `*avatar*` FROM `users` WHERE `users`.`id` = friends.`user_id`) AS `login` FROM `friends` WHERE `id_user`='" . $this->user['id'] . "' ORDER BY `id` DESC LIMIT ")
、私にエラー間違いがある
SQLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s)
を与えますか?あなたがJOIN
、例えばを使用する必要が
[** SQLSTATE \ [21000 \]の重複:複数性違反:1241オペランドには1列が含まれている必要があります。 1つ以上のカラムを返すことはできません。また、1つ以上のカラムを返すことはできないことを説明しています(「sql query **」(https://stackoverflow.com/questions/38326246/sqlstate21000-cardinality-violation-1241-operand-should-contain-1-columns)。代わりに 'join'を使います。 – Nope
複数の列を選択して1つの列名に割り当てようとすると、それはうまくいかず、それは意味をなさないので、それを考えるべきです...そして、mysqlエンジンはそれについて考え、例外を追加しました。そのエラーをスローします。今、JOINの使用方法を示唆している回答があるので、私たちはどのように克服するのですか?JOINを自分で使ってみてください。 –
@AbhikChakraborty私の例を助けてください。 – Martinovska