0

組み込みのインポーターを使用して、bbpress の phpbb3 フォーラムからインポートしました。アカウントを持っていないが、投稿を許可されていた bbpress の匿名ユーザーはすべて、投稿から切断され、すべてが bbpress で匿名として表示されます。次のクエリを使用して、すべてのpost_usernamesfromphpbb_postsおよび created ユーザーを取得しました。

INSERT INTO wp_users (user_login)
    SELECT DISTINCT post_username 
    FROM phpbb_posts

今、3 つの異なるテーブル間でクエリを実行しようとしています。これらの行に沿ったもの:

SELECT ID FROM wp_users 
INSERT INTO wp_posts(post_author)
WHERE wp_posts(post_date) = phpbb_posts(post_time)
  AND phpbb_posts(post_username) = wp_users(user_login)

明らかにこれは正しくありません... おそらく構文エラーですが、最初の行からuser_loginを に接続する必要があることを MySQL に伝える何らかの方法を追加する必要もあります。IDうまくいけば、これは理にかなっています。助けてくれてありがとう!

更新されたクエリ:

SELECT ID FROM wp_users

SELECT post_time FROM phpbb_posts = post_date
SELECT post_username FROM phpbb_posts = user_login

うまくいけば、この構文はもっと理にかなっています。これらは機能し、正しい情報を選択しました。問題は、WHEREステートメントを適切に記述する方法がわからないことです.baskintが言ったように、最後のステートメントを何らかの方法でサブクエリにする必要があると思います。再度、感謝します!

4

2 に答える 2

1

各テーブルの PK (主キー) と FK (外部キー) の関係がどのようなものかはまだわかりません。wp_usersただし、それがプライマリ テーブルであり、 ...phpbb_posts.post_usernameの FK であると仮定します。wp_users.user_login

SELECT `wp_users`.`ID` 
FROM `wp_users` INNER JOIN
(SELECT `phpbb_posts`.`post_username` FROM `phpbb_posts`, `wp_posts` WHERE `phpbb_posts`.`post_time` = `wp_posts`.`post_date` ) AS `posts`
ON `wp_users`.`user_login` = `posts`.`post_username`;

編集 (2012 年 12 月 5 日):チャットして特定の作業を行った後、@sbroways はいくつかのフィールドのデータ型を変更し、その他のいくつかの変更を行う必要がありました。次に、最終的なクエリは次のようになりました。

SELECT wp_users.*, ws_posts.*
FROM wp_users INNER JOIN ws_posts
ON wp_users.user_login = ws_posts.user_login
于 2012-12-05T04:51:14.703 に答える
0

あなたが正しい。あなたの構文は紛らわしく、正しくありません。あなたが達成しようとしていることを理解しようとしています。2 番目のクエリで、選択と挿入を同時に行うのはなぜですか? おそらく私は何かが欠けているかもしれませんが、どのテーブルから何を引き出そうとしているのか、そして結果を平易な英語でどのように見たいのかを述べていただけますか?

また、サブクエリの観点から考えることができます (SELECT * FROM b WHERE id IS IN (SELECT Id from a)。これを数回カスケードして、おそらく答えを得ることができます。

于 2012-12-05T03:48:48.927 に答える