Goeienmiddag,

Ik zit met het volgende probleem, op het moment heb ik twee queries maar ik wil er eentje hebben dit is ook makkelijker met weergeven van de data.


$res = $db->query("SELECT t.ticketid AS TicketID, uo.organizationname AS Organization, t.fullname AS Contact, ticketmaskid AS Ticket, t.departmenttitle AS Department, ticketstatustitle AS TicketStatus,
SUM((COALESCE(tt.timebillable,0)/60/60)*COALESCE(optionvalue,0)) as Total_Price
FROM swtickets t
LEFT JOIN swtickettimetracks tt ON tt.ticketid = t.ticketid
LEFT JOIN swusers u ON t.userid = u.userid
LEFT JOIN swuserorganizations uo ON u.userorganizationid = uo.userorganizationid
LEFT JOIN swcustomfieldvalues cfv ON tt.tickettimetrackid = cfv.typeid
LEFT JOIN swcustomfieldoptions cfo ON cfo.customfieldoptionid = cfv.fieldvalue
WHERE t.isresolved =1
AND ((date(FROM_UNIXTIME(t.dateline)) BETWEEN '" . $jaardag . "' AND '" . $jaareind . "')) 
GROUP BY  uo.userorganizationid");

2e Query
						
$debnr = $db->query("SELECT t.ticketid AS TicketID, uo.organizationname AS Organization, fieldvalue AS debnr
FROM swtickets t
LEFT JOIN swusers u ON t.userid = u.userid
LEFT JOIN swuserorganizations uo ON u.userorganizationid = uo.userorganizationid
LEFT JOIN swcustomfieldvalues cfv ON uo.userorganizationid = cfv.typeid
WHERE cfv.customfieldid = 3
AND ((date(FROM_UNIXTIME(t.dateline)) BETWEEN '" . $jaardag . "' AND '" . $jaareind . "')) 
GROUP BY  uo.userorganizationid");


Dit zijn mijn twee queries, en het probleem wat ik heb is ik krijg conflicten omdaat ik eerst cfv.typeid vergelijk met tt.timetrackid en zoals je ziet in de tweede query nog een keer vergelijk maar dan met uo.userorganizationid dit is dus waar ik tegen aanloop. weet iemand hoe ik dit kan verhelpen? subquery kan niet omdat ik meerdere waardes terug krijg.

Alvast bedankt,
Patrick
Hoe heb je de tabellen opgebouwd en wat moet het uiteindelijke resultaat zijn?
Welk nut heeft het om ze samen te voegen? Beide queries leveren een resultaat welke niet klopt, al denk jij uiteraard van wel.

De queries zouden bij de execute een error moeten opleveren i.v.m. samenstelling GROUP BY.

m.a.w. verdiep je eerst eens wat verder in sql en ga dan eens een stapje verder
@Noppes:
Als de queries een fout opleveren dan is het zeker nier door de group by, misschien moet jij jezelf ook eens in sql verdiepen.
Natuurlijk moet je group by niet op die manier gebruiken, het zal een onverwacht resultaat opleveren maar geen fout.
Inmiddels heb ik de oplossing al, heb het gewoon in sub query gedaan met limit 1 aangezien hij per regel alles eruit haalt. En wie zegt dat deze query voor een execute is, ik waardeer de hulp maar je hoeft mensen niet tegaan afzeiken homefront dan kan je net zo goed de reactie laten voorbij gaan... Het is namelijk een hulp fora geen kraak mensen af omdat jij meer kennis hebt fora.
Toch bedankt voor de hulp

Groeten,
Patrick
@Ger van Steenderen, juist omdat de GROUP BY niet correct is zal er een fout gegeven moeten worden als de query wordt geexecuteerd. Als dat niet gebeurt, dan staat er het een en ander verkeerd geconfigureerd.

Noem mij maar andere database - in standaard configuratie - die deze queries in deze omstandigheid zonder foutmelding executeerd m.u.z. mysql, want daar weten we immers al van dat die bijna alles slikt wat het gevoerd wordt.

Dus niet zeiken over feitelijke principes!!

@Patrick, als je een query niet executeerd dan verkrijg je ook geen resultaat, dus bedenk je voordat je wat gaat lopen blaten.
De query zal inderdaad een Error: Not a Group By Expression moeten geven. Wellicht wordt dit niet getoond maar het is zeer zeker fout.
Here are three ways to resolve Not a Group By Expression
1. Make the expression or column listed in the SELECT list also in the GROUP BY clause by completely rewriting the SELECT statement.
2. Completely remove the GROUP BY function from the SELECT statement, including MIN, MAX, SUM, and/or COUNT.
3. If there is an expression which is not in the GROUP BY clause, remove it completely from the SELECT list.

Reageren