2016-07-26 14 views
1

tbl_pop_up_messagesのtbl_usersからすべてのユーザーにseprateポップアップを追加します。たとえば、tbl_usersに50人のユーザーがいる場合、tbl_pop_up_messagesにはすべてのユーザーに対して50行を追加する必要があります。ログインしたすべてのユーザーにはポップアップが表示され、clicの後にポップアップが無効になります。行。親切に、ガイド。他のテーブルからIDを取得して1つのテーブルに値を挿入する方法

SELECT user_id FROMt bl_users; 
INSERT INTO tbl_pop_up_messages (user_id, popup_text, active) 
VALUES ('3', 'Pop Up Text', '1'); 
+0

? –

答えて

1

あなたはこれを行うことができます。

SQL DBMS
INSERT INTO tbl_pop_up_messages(user_id, popup_text, active) 
    SELECT u.user_id, 'Pop Up Text', '1' 
    FROM tbl_users u; 
+0

大きな助けをいただきありがとうございます。 –

2

あなたは、あなたが各ユーザーに追加することにしたいポップアップメッセージを持つテーブルが提供する、以下のように、INSERT INTO SELECTでそれを行うことができます。

また
INSERT INTO tbl_pop_up_messages (user_id, popup_text, active) 
SELECT usr.user_id 
    , pmt.popup_text 
    , 1 
FROM tbl_users usr 
    cross join popup_messages_table pmt 

を、あなたはより多くを使用することができますあなたは、ユーザーごとに一つだけのポップアップテキストメッセージを挿入する必要がある場合は

INSERT INTO tbl_pop_up_messages (user_id, popup_text, active) 
SELECT usr.user_id 
    , pmt.popup_text 
    , 1 
FROM tbl_users usr 
    cross join (select 'Pop Up Text' popup_text 
       union all 
       select '2nd Pop Up Text' 
       union all 
       select '3rd Pop Up Text' 
       -- and so on until you reach X messages or how many you want for each user 
      ) pmt 

:あなたは、ポップアップメッセージテーブルを持って以下のようにしていない場合には、..「直接」と長いアプローチ

INSERT INTO tbl_pop_up_messages (user_id, popup_text, active) 
SELECT usr.user_id, 'Pop Up Text', '1' 
FROM tbl_users 
+0

1は常に1に等しいので、 –

+0

「常に真」の結合条件で「左結合」の代わりに「クロス結合」を使用しないのはなぜですか? –

+0

@a_horse_with_no_nameあなたは正しいと思いますが、結局同じ結果になるでしょう。私はそれが実行計画に差をつけるかどうか不思議です(クロスジョインと1 = 1の左ジョイント) –

関連する問題