مضحي Modhy نشر 9 سبتمبر 2021 أرسل تقرير نشر 9 سبتمبر 2021 لدي هذه الجدول table 1 CREATE TABLE users ( id_user uuid DEFAULT uuid_generate_v4(), email character varying(255) UNIQUE, createdAtU timestamptz, updatedAtU timestamptz, PRIMARY KEY (id_user) ); table 2 CREATE TABLE usersInfo ( id_user uuid, fullname character varying(255), createdAtI timestamptz, updatedAtI timestamptz, PRIMARY KEY (id_user) ); table 3 CREATE TABLE usersCode ( id_user uuid UNIQUE, code integer, createdAt timestamptz, updatedAt timestamptz, PRIMARY KEY (id_user) ); كيف اعمل View يجمع البيانات في مكان واحد علماً ان id_user متساوي في كل الجداول بحيث اول ما انشىء مستخدم جديد يتم انشاء له صفوف مقابلة في الجداول الاخرى بنفس id 1 اقتباس
1 Hassan Hedr نشر 10 سبتمبر 2021 أرسل تقرير نشر 10 سبتمبر 2021 يمكنك انشاء View لتمثل جدول جديد (وهمي) يجمع كل البيانات ويخفي البنية الحقيقية للجداول ويجعل عبارة الاستعلام اقصر واسهل كالتالي CREATE VIEW usersView AS ( SELECT u.id_user AS id_user, u.email AS email, u.createdAtU AS createdAtU, u.updatedAtU AS updatedAtU, ui.fullname AS fullname, ui.createdAtI AS createdAtI, ui.updatedAtI AS updatedAtI, uc.code AS code, uc.createdAt AS createdAt, uc.updatedAt AS updatedAt FROM users u LEFT JOIN usersInfo ui ON u.id_user = ui.id_user LEFT JOIN usersCode uc ON u.id_user = uc.id_user ); وتستعلم عن بيانات مستخدم ما كالتالي SELECT * FROM usersView WHERE user_id = 5 لادخال بيانات في عدة جداول معا تتعامل مع ال View كانها جدول حقيقي INSERT INTO usersView (fullname, email, code) Values ('Full Name', 'email@example.com', 'AX5'); 1 اقتباس
0 مضحي Modhy نشر 12 سبتمبر 2021 الكاتب أرسل تقرير نشر 12 سبتمبر 2021 @Hassan Hedr في حال اضفت بيانات من خلال userView هل يتم اضافة id في كل الجداول تلقائياً ؟ علماً انه تلقائي فقط في الجدول الاول اقتباس
0 Hassan Hedr نشر 12 سبتمبر 2021 أرسل تقرير نشر 12 سبتمبر 2021 بتاريخ 2 ساعات قال مضحي Modhy: @Hassan Hedr في حال اضفت بيانات من خلال userView هل يتم اضافة id في كل الجداول تلقائياً ؟ علماً انه تلقائي فقط في الجدول الاول لا لن يضاف ستحتاج لذكره صراحة في تعريف ال view وذكره في استعلام الادخال في insert كالتالي CREATE VIEW usersView AS ( SELECT u.id_user AS id_user, u.email AS email, u.createdAtU AS createdAtU, u.updatedAtU AS updatedAtU, ui.id_user AS ui_id_user, ui.fullname AS fullname, ui.createdAtI AS createdAtI, ui.updatedAtI AS updatedAtI, uc.id_user AS uc_id_user, uc.code AS code, uc.createdAt AS createdAt, uc.updatedAt AS updatedAt FROM users u LEFT JOIN usersInfo ui ON u.id_user = ui.id_user LEFT JOIN usersCode uc ON u.id_user = uc.id_user ); وعند الادخال يجب ذكر ال id لكل جدول اذا واجهت مشاكل في الإدخال جرب أحد الطريقتين تبديل LEFT JOIN بـ INNER JOIN تقسم عمليات الادخال بحيث في كل مرة تدخل عناصر متعلقة بجدول واحد فقط (في هذه الحالة انصح استخدام الView فقط كبديل عن الاستعلام SELECT وليس للادخال) INSERT INTO usersView (`email`) VALUES ('email@example.com'); INSERT INTO usersView (`ui_id_user`, `fullname`) VALUES (1, 'Name'); INSERT INTO usersView (`uc_id_user`, `code`) VALUES (1, 'XC5'); 1 اقتباس
السؤال
مضحي Modhy
لدي هذه الجدول
كيف اعمل View يجمع البيانات في مكان واحد علماً ان id_user متساوي في كل الجداول بحيث اول ما انشىء مستخدم جديد يتم انشاء له صفوف مقابلة في الجداول الاخرى بنفس id
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.