Професионална програма
Loading...
+ Нов въпрос
koceww avatar koceww 4 Точки

Non-Directory Files - DB Basics

Здравейте. Очевидно лесна задачка , но ме затрудни и не мога да се сетя как да напиша връзката. 

Разбирам какво трябва да се направи и какво е условието , но не се досещам как.

Това е моето решение , което е грешно очевидно но изкарва донякъде правилен резултат.

Ако може да подскажете или да обясните как трябва да се направи връзката за да получим правилен резултат.Мерси!

SELECT Id,[Name],CONCAT(Size,'KB') as Size FROM Files
WHERE Id != ParentId
ORDER BY Id,Name,Size DESC

8.Non-Directory Files

Examples        

Select all of the files, which are NOT a parent to any other file. Select their size of the file and add "KB" to the end of it. Order them file id (ascending), file name (ascending) and file size (descending).

Id

Name

Size

6

Controller.json

14034.87KB

12

Model.MD

4753.67KB

17

Login.html

2863.23KB

..

Тагове:
1
Databases Basics - MySQL 17/06/2020 13:01:20
Bobby_Apostolov avatar Bobby_Apostolov 126 Точки

Здравей, и на мен ми трябваше време докато схвана идеята на задачата, от диаграмата виждаме, че Files има връзка със себе си, надали просто са я сложили за красота, join-ваме Files със себе си, и трябва да видим, кои записи със Ид-то на parentId-то от лявата таблица не съществуват, LEFT JOIN и търсим NULL
ако не съм го обяснил като хората, ето как съм го направил, да се ориентираш по кода..странно е да

SELECT f1.Id, f1.[Name], CONCAT(f1.Size,'KB') AS [Size]
    FROM Files as f1
    LEFT JOIN Files as f2 ON f1.Id = f2.ParentId
    WHERE f2.Id IS NULL
    ORDER BY f1.Id,f1.[Name],f1.Size DESC

0
18/06/2020 14:37:27
koceww avatar koceww 4 Точки

Да, разбрах го . Благодаря за обяснението. Сега вече придоби смисъл и разбира се разбрах как се решава. Мерси

1
m.nikolov97 avatar m.nikolov97 24 Точки

Здравей!

Аз също имах известни затруднения с въпросната задача. Попаднах на твоята тема, но в общи линии исках да си довърша моето решение, защото това ми изглеждаше малко по-сложно написано, отколкото би трябвало да е.

Та просто, за  да има още един вариант, пускам моя скрипт:

SELECT Id, Name, CONVERT(VARCHAR(15), Size) + 'KB' As Size FROM Files
WHERE Id NOT IN (SELECT ParentId FROM Files WHERE ParentId IS NOT NULL) 
ORDER BY Id, Name, Size DESC

Успех на изпита утре! smiley

0