تالار گفتمان مانشت
چگونه بدون از استفاده از join کوئری بنویسم - نسخه‌ی قابل چاپ

چگونه بدون از استفاده از join کوئری بنویسم - hajilari - 10 اردیبهشت ۱۳۹۴ ۰۶:۵۸ ب.ظ

سلام در این مثال می خواهم بدون استفاه از عملگر join کوئری بنویسم لطفا راهنمایی کنید چطوری این کار رو انجام بدم

(loan⋈borrower)
("σ branch_name="hafez)
π customer_name

RE: چگونه بدون از استفاده از join کوئری بنویسم - gogooli - 10 اردیبهشت ۱۳۹۴ ۰۹:۲۸ ب.ظ

سلام.
اگر ساختار جداولتان را بگویید دقیق تر می توانیم بگوییم. اگر در جدول borrower یک ستون به نام loan_id داشته باشیم که id جدول loan را ذخیره می کند بدون join به یکی از دو صورت زیر می شود:
select customer_name
from borrower
where loan_id IN (select id from loan where branch_name="hafez")

select customer_name
from loan,borrower
where loan.id=borrower.loan_id and branch_name="hafez"

RE: چگونه بدون از استفاده از join کوئری بنویسم - hajilari - 12 اردیبهشت ۱۳۹۴ ۰۱:۱۴ ب.ظ

[تصویر:  350707_54058788694324845386.png]

ساختار جدولم اینه
و می خواهم تمام customer name هایی که در branch name حافظ وام گرفته اند رو ببینم بدون استفاده از دستور join ⋈
و کوئری رو فقط با دستورات جبر رابطه ای بنویسیم نه sql
متشکرم

RE: چگونه بدون از استفاده از join کوئری بنویسم - gogooli - 12 اردیبهشت ۱۳۹۴ ۰۷:۰۸ ب.ظ

به اینصورت می شه:
[tex]\prod customer.customer-name(\delta customer.customer-name=borrower.customer-name^{ }\wedge\: loan.loan-number=borrower.loan-number\: \wedge\: loan.branch-name="hafez"(customer\times borrower\times loan))[/tex]
می تونیم هم اول [tex]\delta branch-name="hafez"[/tex] رو روی loan بزنیم بعد ضرب کنیم که روی جدول کوچکتری ضرب انجام بشه.یعنی این طوری[tex]\prod customer.customer-name(\delta\: customer.customer-name=borrower.customer-name\: \wedge\: loan.loan-number=borrower.loan-number(customer\times borrower\times\delta branch-name="hafez"(loan)))[/tex]