Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Prog-Szerv

    csendes tag

    válasz bambano #5450 üzenetére

    Erre valamiért 0 értéket kapok vissza pedig ellenőriztem van a feltételeknek megfelelő projekt a join_project_task-on belül, van olyan amelyiknek minden task értéke 0 hour...valamit szem elől tévesztek szerintem....de köszönöm a segítséget. :R

  • Prog-Szerv

    csendes tag

    válasz nyunyu #5447 üzenetére

    Kicsit agyaltam rajta, így az van amit említettél is, sajnos ez kiszelektálja azokat a projekteket is amikben van 0 hour érték is és annál nagyobb is:
    SELECT COUNT(DISTINCT project_id) FROM join_project_task JOIN project ON project.id = join_project_task.project_id WHERE project.elements > 0 AND join_project_task.hours > 0

    Ez úgy tűnik működik, csak azokat szelektálja amikben csak 0 hour értékű task van:
    SELECT COUNT(DISTINCT project_id) FROM join_project_task JOIN project ON project.id = join_project_task.project_id WHERE project.elements > 0 AND join_project_task.hours = 0

    Próbáltam beépíteni a not in operátort de erre 0 értéket kapok vissza:

    SELECT COUNT(DISTINCT project_id) FROM join_project_task JOIN project ON project.id = join_project_task.project_id WHERE project.elements > 0 AND project.id NOT IN (SELECT project_id FROM join_project_task WHERE hours = 0)

  • Prog-Szerv

    csendes tag

    válasz nyunyu #5447 üzenetére

    Kezdem kapizsgálni....az a baj hogy nekem nem a task táblában tárolódik az hour -ra vonatkozó adat és mivel ez egy elég masszív program nem szeretném ezt a részét átalakítani, mert akkor egy csomó másik helyen módosítanom kellene a kódot :( Szóval az hour a "join_project_task" táblán belül van. Leegyszerűsítve csak arra ami nekünk most itt kell:

    "project" tábla tartalma: id
    "task" tábla tartalma: id, name
    "join_project_task" tartalma: project_id, task_id, hours

    Az hours értéke változhat, nem fix, tehát előfordulhat hogy például egy szerelés 4 óra de lehet hogy csak 2, ezért van így tárolva. Ez olyasmi mint egy digitális jelenléti ív, tehát változhat hogy 1-1 feladat mennyi idő alatt készül el, utólag kerül beírásra.

  • Prog-Szerv

    csendes tag

    Sziasztok!

    Kis segítséget szeretnék kérni. :R MySQL-en belül adott 3 db adattábla: project, task, join_project_task Értelem szerűen a join tábla köti össze a task táblában felsorolt feladatokat a projektekkel és a projekt táblán belül szerepelnek a projektek alapadatai. Namost a join táblán belül ugye szerepel a project_id, task_id és egy hour oszlop ami arra szolgál, hogy ide kerül be az az információ INT formában hogy az adott projekthez tartozó adott feladatot mennyi időbe telt elvégezni. A kérdés :) hogyan tudnám összeszámolni mondjuk egy sum-al hogy hány darab olyan projektem van ahol a projekthez tartozó összes feladat el lett végezve tehát az hour oszlop mindenütt > 0
    Példa:

    ezt ne countolja:
    p_id=1 task_id=1 hour =1
    p_id=1 task_id=2 hour =0

    ezt viszont igen:
    p_id=2 task_id=1 hour =1
    p_id=2 task_id=2 hour =2

    és ezt is:
    p_id=3 task_id=2 hour =4
    p_id=3 task_id=3 hour =3

    így a végeredmény a példa alapján: 2
    Illetve azt hogyan tudom megoldani hogy számolja össze az hour értékeit de csak azoknál a projekteknél ahol mindegyik > 0 ?
    Remélem nem bonyolítottam túl a leírást. :) :R

Új hozzászólás Aktív témák