1

これが、実行しようとしているMySQLクエリです。次のエラーで失敗し続けます: フィールド リストの列 'staff_tbl.mainrank' が不明です。これはどのように可能ですか?

DROP TEMPORARY TABLE IF EXISTS `staff_tbl`;
CREATE TEMPORARY TABLE staff_tbl(childrank TEXT, mainrank TEXT);

INSERT INTO staff_tbl
SELECT permissions_inheritance.child, permissions_inheritance.parent 
FROM permissions_inheritance;

SELECT      authme.username, permissions_inheritance.child,     
permissions_inheritance.parent, staff_tbl.mainrank
FROM        authme 
INNER JOIN  permissions_inheritance ON authme.username = permissions_inheritance.child
INNER JOIN  staff_tbl alies2 ON staff_tbl.mainrank = permissions_inheritance.parent;


DROP TABLE `staff_tbl`;

お役に立てば幸いです。私は髪のすべての部分を引っ張ってきました。だからあなたたちは私の最後の希望です。私はまだ初心者です:)

4

2 に答える 2

1

最後SELECTに、最後の結合が間違っています。と結合しstaff_tbl、エイリアス(alies2)を付けます。alies2.mainrank = permissions_inheritance.parent次のステートメントで(の代わりに)そのエイリアスを使用する必要がありますが、使用しstaff_tbl.mainrank = permissions_inheritance.parentませんでした。

このようにあなたの最後を書いてみてくださいSELECT

SELECT      a.username, p.child, p.parent, s.mainrank
FROM        authme a
INNER JOIN  permissions_inheritance p ON a.username = p.child
INNER JOIN  staff_tbl s ON s.mainrank = p.parent;

上記でこれを修正しました。また、クエリを短くして読みやすくするために、各テーブルにエイリアスを設定しました。

于 2012-06-18T12:31:07.087 に答える
0

MySQL では、そのうちの 1 つが一時的なものである場合、同じ名前の 2 つのテーブルを作成できます。

staff_tblクエリで一時テーブルを結合しようとしていますが、MySQL はフィールドを含まない別の非一時テーブルを結合しmainrankます。

したがって、最初にこの非一時テーブルを削除します。

于 2012-06-18T12:44:05.103 に答える