مشكلة في ترجمة استعلام خادم SQL إلى Firebird
-
03-10-2019 - |
سؤال
أنا جديد في Firebird ، وأواجه صعوبة خاصة في ترجمة T-SQL إلى Firebird SQL. يتم تخزين هذا الرمز خارج قاعدة البيانات ، وليس في إجراء مخزن.
DECLARE @NumTotal int
DECLARE @NumUsed int
SELECT @NumTotal = COUNT(*)
FROM "some_Table"
WHERE "CreatedOn"=@CreatedOn
SELECT @NumUsed = COUNT(*)
FROM "some_Table"
WHERE "CreatedOn"=@CreatedOn AND "UserID" IS NOT NULL
SELECT @NumUsed AS "NumUsed", @NumTotal AS "NumTotal"
أظن من الأخطاء وتجربتي أنني أجبرت بشكل أساسي على وضع هذا في إجراء مخزن بطريقة أو بأخرى. هل هناك طريقة يمكنني القيام بذلك مع الحفاظ على الكود خارج قاعدة البيانات؟
المحلول
يمكن تبسيط الكود الخاص بك إلى استعلام واحد:
SELECT COUNT(*) AS numTotal,
(SELECT COUNT(*)
FROM YOUR_TABLE
WHERE userid IS NOT NULL
AND createdon = @createdon) AS numUsed
FROM YOUR_TABLE
WHERE createdon = @createdon
استخدام عروض الأسعار المزدوجة هو ANSI للهروب من الشخصيات غير العادية ، لا شيء أراه في المثال.
لا تنتمي إلى StackOverflow