MySQL query hulp

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Microsoft Acess Developer

Functieomschrijving Wat ga je doen? Heb jij ongeveer 3 jaar ervaring als Software Developer, en komen de volgende kennisgebieden jou niet vreemd voor: MS Acces, C# & SQL? Vind jij het daarnaast leuk om maatwerk software te ontwikkelen voor klanten in een bijzondere branche? Lees dan snel verder! Als developer ben jij samen met een gemotiveerd team van 10 collega’s verantwoordelijk voor het creëren van aangemeten software voor klanten. Je bent klantvriendelijk en oplossingsgericht ingesteld, omdat het essentieel is om de klanten zo goed mogelijk te helpen met hun uitdagingen. Het is mogelijk om vanuit huis je werkzaamheden uit te

Bekijk vacature »

Software Programmeur PHP

Functie Wij zijn op zoek naar een PHP programmeur voor een leuke opdrachtgever in omgeving Alblasserdam. Heb jij altijd al willen werken bij een bedrijf dat veilige netwerkverbindingen levert door middel van veilige oplossingen? Lees dan snel verder. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Tevens

Bekijk vacature »

Back End Developer

Als Back End developer bij KUBUS houd je je bezig met het ontwikkelen van de (web)applicatie en services van BIMcollab. Je hebt een focus op de back end van onze software, daarvoor werken wij hoofdzakelijk met C# en .NET. Wij hanteren een full-stack benadering, wat betekent dat je naast de back-end ook meehelpt bij andere onderdelen van de code. Als softwarebedrijf bevindt KUBUS zich in een unieke positie. We bouwen aan onze eigen producten die wereldwijd door tienduizenden gebruikers worden gebruikt. Ons bedrijf heeft precies de juiste grootte: groot genoeg om echt impact te maken in de markt, maar klein

Bekijk vacature »

Software Programmeur

Functie omschrijving Ben jij op zoek naar een organisatie waar je samen met een team werkt aan iets moois en waar je naast hard werken ook hard kunt lachen? Dan ben je hier aan het juiste adres! Voor een informeel IT-bedrijf in omgeving Wassenaar zijn wij op zoek naar versterking. Ben jij op zoek naar een nieuwe uitdaging als Software Programmeur lees dan snel verder! Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed

Bekijk vacature »

PHP Developer

As a PHP Developer at Coolblue, you ensure that our webshops work as optimal as possible. How do I become a PHP Developer at Coolblue? As a PHP Developer you work together with other development teams to make our webshop work as optimal as possible and to make our customers happy. Although you are a PHP Developer, you are not averse to a little TypeScript or other technologies that might be used. Would you also like to become a PHP Developer at Coolblue? Read below if the job suits you. You enjoy doing this Writing vanilla PHP code. Working with

Bekijk vacature »

Low-Code Expert/Developer: Power Platform Speciali

Bedrijfsomschrijving Als Low-Code Expert/Developer bij ons innovatieve bedrijf, neem je een cruciale rol op je in de creatie, ondersteuning en implementatie van diverse oplossingen met behulp van het veelzijdige Power Platform. Dit platform omvat Power Apps, Power BI, Power Automate, Power Virtual Agent en Azure Logic Apps. Het Power Platform biedt je de mogelijkheid om klanten te voorzien van naadloze integraties door op maat gemaakte oplossingen te creëren die compatibel zijn met (bijna) alle bestaande software-infrastructuren. Dankzij het uitgebreide scala aan toepassingen, krijg je de kans om als architect en projectleider van je eigen oplossing te fungeren. Dompel jezelf onder

Bekijk vacature »

Delphi Programmeur

Functie omschrijving Onze opdrachtgever is gespecialiseerd in kantoor-bedrijfssoftware en zit gevestigd in omgeving Numansdorp. Als programmeur ben jij bij dit bedrijf met het volgende bezig; Je vertaalt technische en functionele ontwerpen naar kwalitatieve software. Je ontwikkelt, ontwerpt en test software. Je maakt daarbij veel gebruik met de volgende tools & technologieën: Delphi 10.3 (Rio), QuickReport 6. Je krijgt in deze rol veel vrijheid en verantwoordelijkheid. Je levert projecten van A - Z op, en werkt daarbij projectmatig en gestructureerd. Bedrijfsprofiel Dit bedrijf richt zich op maatwerk software oplossingen. Deze software oplossingen worden ingezet in de financiële branche. Het betreft een

Bekijk vacature »

Front-end PHP Developer

Dit ga je doen Bouwen van de frontend van een nieuwe applicaties; Verbeteren van de user experience; Opstellen van een style guide; Schakelen met collega developers over de te bouwen oplossing; Je speelt een belangrijke rol in het neerzetten van het nieuwe systeem; Werken met o.a. Symfony 6, API Platform, Twig, Javascript, Redis Automatiseren van processen; Koppelen van verschillende functionaliteiten; Unit tests, integration tests, end-to-end tests; In de toekomst ga je nog werken aan andere projecten. Hier ga je werken Voor onze vaste opdrachtgever in de regio Breda zijn wij op zoek naar een Frontend Developer. Het betreft een organisatie

Bekijk vacature »

Medior C# Developer

You'll build modern applications for Coolblue's back office. We have a lot of friends, and they crave well-structured data and user-friendly, task-focused applications. How do I become a Medior C# Developer at Coolblue? You regularly participate in brainstorm sessions about user experience, data, and task flow with the UX Designer, Product Owner, and Data Scientists in your team. Besides that you will create disconnected, highly congruent, and testable code that can easily be maintained and is future-proof. Want to become C# Developer at Coolblue? Read below if the job suits you. You enjoy doing this Working with various types of

Bekijk vacature »

Digitale Tovenaar Gezocht: Junior Low-code/No-code

Bedrijfsomschrijving Duik mee in een wereld vol innovatieve avonturen waar gegevens en technologie een magische symbiose aangaan! Al meer dan twee decennia lang zijn we de tovenaars achter de schermen die oplossingen creëren voor de meest complexe klantcontactvraagstukken en datagedreven software-uitdagingen. Bij ons draait het om de kracht van samenwerking en groei. We zijn een hechte vriendengroep die samen bergen verzet om elkaar én onze klanten te laten schitteren. Jouw succes is ons succes en we streven ernaar om elkaar naar nieuwe hoogten te tillen, niet voor even, maar voor altijd. We willen dat jij je helemaal thuis voelt in

Bekijk vacature »

Ambitieuze Junior/Medior Low-code Developers gezoc

Bedrijfsomschrijving Transformeer bedrijven met jouw expertise in innovatieve technologie Ben je een bedreven softwareontwikkelaar met ervaring in Low-code platformen, of sta je te popelen om je in deze baanbrekende oplossing te verdiepen? Wij zijn op zoek naar jou! Ons klantenbestand groeit en we willen ons team uitbreiden met deskundige en leergierige Low-code specialisten. Is het jouw passie om organisaties te ondersteunen in hun digitale transformatie en maatwerkoplossingen te bieden met behulp van geavanceerde software? Wij zijn een vooruitstrevend bedrijf dat dagelijks werkt aan het oplossen van complexe vraagstukken om de digitale ambities van onze klanten te realiseren. Functieomschrijving Ontwikkel op

Bekijk vacature »

Cobol Developer

Dit ga je doen Als Cobol Ontwikkelaar zal je gaan meebouwen aan een onderdeel van het backend systeem waarbij je het functionele ontwerp vertaald naar een technische oplossing die geïntegreerd kan worden in de huidige omgeving. Je zorgt ervoor dat de bedrijfsprocessen op een efficiënte manier worden uitgevoerd en werkt proactief aan het verbeteren hiervan. Samen met jouw collega’s reviewen jullie elkaars code en test je je eigen code. Je werkt nauw samen met andere ontwikkelaars, testers en functioneel ontwerpers. Taken pakket: Beheren en doorontwikkelen van de bestaande omgeving; Vertalen van een functionele vragen naar een technische oplossing; Doorvoeren van

Bekijk vacature »

Traineeship Fullstack developer (WO, 0 tot 3 jaar

Functie Zoals beschreven ga je vanaf start aan de slag bij een passende opdrachtgever, hierbij kijken ze echt naar jouw wensen, kennis/ervaring maar ook de reisafstand. Momenteel hebben ze meerdere klanten waarbij ze groepen hebben opgezet wat maakt dat er diverse uitdagende kansen liggen. Naast het werken bij de opdrachtgever, en het volgen van de masterclasses, zul je regelmatig met de andere trainees in contact zijn. Niet alleen op professioneel vlak maar juist ook bij de borrels en kwartaaluitjes! Kortom; een jaar lang hard aan jezelf werken in combinatie met gezelligheid en plezier. Spreek dit jou aan? Dan komen we

Bekijk vacature »

Klein team zoekt grote fullstack .NET developer to

Bedrijfsomschrijving Deze werkgever is marktleider in de Benelux en is Europees ook al aardig aan de weg aan het timmeren. Ze voorzien technische winkels van apparatuur om producten een langer leven te geven. Hiermee reduceren ze flink wat CO2 uitstoot en dat is natuurlijk goed voor iedereen! IT speelt een belangrijke rol in de bedrijfsvoering en de applicaties zijn van goed niveau. Als fullstack .NET developer ga jij je bijdrage leveren aan het verder verbeteren van de applicaties en de interne processen. Ze zijn nu met ruim 50 medewerkers in totaal en de afdeling development bestaat uit een 5tal developers.

Bekijk vacature »

Software Developer

Functie omschrijving In deze functie ga je aan de slag met het door ontwikkelen van de interne software. Zij maken gebruik van een CRM, wat door de hele organisatie gebruikt wordt. Andere taken: Je gaat het CRM-systeem door middel van PHP verder ontwikkelen; Verder bouw je verschillende API's en koppelingen tussen systemen; Ook ga je collega's ondersteunen bij vragen over de software en applicaties; Deelnemen aan overleggen met het development team; Bij interesse is er de mogelijkheid om junioren te gaan begeleiden. Bedrijfsprofiel Dit bedrijf is actief binnen de telecombranche. Het hoofdkantoor zit in regio van Den Bosch en er

Bekijk vacature »
Liefhebber Laravel

Liefhebber Laravel

15/11/2016 08:54:04
Quote Anchor link
Hoi,

Kunnen jullie me even helpen om een juiste query op te bouwen: Dit is mijn tabel met evenementen:
(Weet dat de echte tabel ongeveer 3000 evenementen bevat!)

idtitlestartend
10evenement12016-11-05 08:00:002016-11-05 10:00:00
11evenement22016-11-06 09:00:002016-11-06 12:00:00
12evenement32016-11-06 14:00:002016-11-06 16:00:00
13evenement42016-11-08 10:00:002016-11-06 12:00:00
14evenement52016-11-08 10:00:002016-11-06 12:00:00


Ik zou een lijst willen verkrijgen van alle uren / gegroepeerd per dag dat er zich een evenement voordeed.
Dus: de lijst die ik hier wil verkrijgen is:

  • Datum: 2016-11-05 - Aantal uren: 2:00:00
  • Datum: 2016-11-06 - Aantal uren: 5:00:00
  • Datum: 2016-11-08 - Aantal uren: 2:00:00


Merk op dat op datum 6/11 2 evenementen waren, die opgeteld zijn
Merk op dat op datum 8/11 ook 2 evenementen waren maar dat die overlapten, en deze zijn dus samengeteld !!

Kunnen jullie me een query bezorgen die dit resultaat geeft?

Alvast bedankt!

Groetjes!
Gewijzigd op 15/11/2016 08:54:43 door Liefhebber Laravel
 
PHP hulp

PHP hulp

06/05/2024 18:54:56
 
Adoptive Solution

Adoptive Solution

15/11/2016 11:46:40
Quote Anchor link
Probeer het eens met :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
sum( end-uur - start-uur  )


en :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
group by start-datum
 
Liefhebber Laravel

Liefhebber Laravel

15/11/2016 12:09:39
Quote Anchor link
Hoi Adoptive Solution,

Dit lijkt te werken, ik krijg dan wel de tijd terug als een integer. Bijvoorbeeld 5:30 uren verschil wordt getoond als 53000
Bestaat er een functie om dit terug om te zetten naar 05:30:00 of moet ik de : er via SUBSTRING tussenplaatsen?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

15/11/2016 12:32:08
 
Adoptive Solution

Adoptive Solution

15/11/2016 12:35:06
Quote Anchor link
Ik zag de vraag al aankomen.

Met behulp van date_format() kan je het verfijnen.

Hier een voorbeeld van een bestand (zonder datum) met begin- en eindtijd die de totaal uren opsomt per heel uur :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT *, date_format(begin,'%H') AS uur, SUM(date_format(einde,'%H') - date_format( begin, '%H')) AS uren FROM afspraken GROUP BY uur
 
Liefhebber Laravel

Liefhebber Laravel

15/11/2016 13:49:50
Quote Anchor link
Naar het voorstel van Adaptive Solution:
volgende SQL geeft niet het juiste resultaat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT DATE(start) AS datum, SUM( TIME(end) - TIME(start)) as tijd FROM events GROUP BY start


Resultaat:
datumtijd
2016-11-0520000
2016-11-0630000
2016-11-0620000
2016-11-0840000


  • datum 06/11 komt in 2 regels voor, en dit moet opgeteld zijn
  • datum 08/11 wordt als 40000 (4:00h) weergegeven terwijl dit maar 2:00 moet zijn (deze overlappen)




Toevoeging op 15/11/2016 14:04:27:

Hier eventueel de code om de tabel lokaal te importeren. Om te testen indien nodig.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
DROP TABLE IF EXISTS `events`;
CREATE TABLE `events` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(20) DEFAULT NULL,
  `start` datetime DEFAULT NULL,
  `end` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

INSERT INTO `events` VALUES ('1', 'evenement1', '2016-11-05 08:00:00', '2016-11-05 10:00:00');
INSERT INTO `events` VALUES ('2', 'evenement2', '2016-11-06 09:00:00', '2016-11-06 12:00:00');
INSERT INTO `events` VALUES ('3', 'evenement3', '2016-11-06 14:00:00', '2016-11-06 16:00:00');
INSERT INTO `events` VALUES ('4', 'evenement4', '2016-11-08 10:00:00', '2016-11-08 12:00:00');
INSERT INTO `events` VALUES ('5', 'evenement5', '2016-11-08 10:00:00', '2016-11-08 12:00:00');
Gewijzigd op 15/11/2016 13:52:12 door Liefhebber Laravel
 
Adoptive Solution

Adoptive Solution

15/11/2016 14:52:33
Quote Anchor link
Met dank aan de interwebs :

http://www.google.nl/search?q=how+to+calculate+the+time+difference+in+mysql

Dit gefabriekt :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
select *, timediff(end,start) as uren from events;
select *, date_format(start,'%Y-%c-%d') as dag, sum(timediff(end,start)) as uren from events group by dag;
Gewijzigd op 15/11/2016 14:56:20 door Adoptive Solution
 
Liefhebber Laravel

Liefhebber Laravel

15/11/2016 15:02:11
Quote Anchor link
Hoi Adaptive Solution,

Deze query geeft nog steeds de foute resultaten... bij 8/11 telt hij 4 uren, maar dat zou 2 moeten zijn omdat die overlappen...

bedankt voor je tijd alvast!
 
Ivo P

Ivo P

15/11/2016 17:05:36
Quote Anchor link
die overlap is nu net wat het zo ontzettend ingewikkeld maakt.

van 14 tot 16 uur en van 17 tot 20 uur is gewoon een optelling
van 14 tot 16 uur en van 15 uur tot 18 uur is het verschil tussen 18 en 14.

Daar kun je mogelijk nog een mooie formule op loslaten die bepaalt of het eerste tijdstip van de 2e event kleiner is dan de eindtijd van de eerste, maar dan zit je nog weer te kijken met de situatie waarbij event 1 pas begon na event 2

en zo'n formule moet overweg kunnen met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
--------  
           +++++++
en
------------
         +++++++
en
-------------
  +++++
en
-------
+++++++
en
   -----
+++++
en
     ----
++++


en is het ook nog mogelijk dat er meer dan 2 events op een dag zijn?




Toevoeging op 15/11/2016 17:07:59:

Naast DATE_FORMAT() bestaat ook de functie HOUR()
Die is misschien wat mooier om het uur te bepalen?

BTW: gewoon GROUP BY in een query gooien, zeker als er ook nog SELECT * in de query voorkomt, leidt al gauw tot rare resultaten die soms toevallig geven wat je zocht, maar mogelijk niet altijd
 
Liefhebber Laravel

Liefhebber Laravel

16/11/2016 08:27:36
Quote Anchor link
Hoi Ivo P en anderen,

bedankt voor je reactie! Inderdaad, die overlap maakt het ingewikkeld. Ik denk dat ik best alle data per dag binnenhaal, en op PHP hoogte even vergelijk met elkaar, om zo het juiste aantal uren te bepalen.

Ik vul nu een array als volgt op:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[03-11-2016] => Array
(
 [start] => Array
     (
         [0] => 12:25:00
         [1] => 14:55:00
         [2] => 19:00:00
     )
 [end] => Array
     (
         [0] => 14:30:00
         [1] => 17:25:00
         [2] => 20:45:00
     )
)


start[0] en end[0] is bv de eerste evenementtijd.
bestaat er een logica/formule om deze te vergelijken en zo het aantal actieve uren te berekenen?

NB; de uren zijn steeds gesorteerd van vroeg naar laat.

Toevoeging op 16/11/2016 09:24:33:

Heren,

ik heb net deze link gevonden: Klik hier

Hier staat een mySQL query die doet wat ik nodig heb! Maar ik krijg hem niet aangepast naar mijn tabel: hier is mijn query:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
select DATE(start) as date, TIME_FORMAT(SEC_TO_TIME(sum(secs)), '%h:%i')
from (select t.*,
             @time := if(@sum = 0, 0, TIME_TO_SEC(TIMEDIFF(TIME(start), @prevtime))) as secs,
             @prevtime := TIME(start),
             @sum := @sum + isstart
      from ((select DATE(start), TIME(start), 1 as isstart
             from events t
            ) union all
            (select DATE(start), TIME(end), -1
             from events t
            )
           ) t cross join
           (select @sum := 0, @time := 0, @prevtime := 0) vars
      order by 1, 2
     ) t
group by date;


Ik krijg de foutmelding "Unknown column 'start' in 'field list'

Aan de SQL specialisten: Wat doe ik fout?
Gewijzigd op 16/11/2016 08:29:32 door Liefhebber Laravel
 
Thomas van den Heuvel

Thomas van den Heuvel

16/11/2016 14:57:57
Quote Anchor link
Alternatieve oplossing: sla (afleidbare) tussenresultaten op: introduceer een extra kolom met de tijdsduur. Dit maakt je query vele malen eenvoudiger.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

19/11/2016 13:14:57
Quote Anchor link
@Jan
In de subquery met de union heb je geen aliassen op DATE(start) en TIME(start).
Hoe dan ook zal de oplossing van SO in jouw geval niet werken, want dan moet je gaan bijhouden wanneer de datum veranderd.
Daarnaast zullen events die op andere datum beginnen dan ze eindigen niet goed door gerekend worden.

Onderstaande methode werkt met datasets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT DATE(t.period_start) adate, SEC_TO_TIME(SUM(t.secs)) atime
FROM
    (SELECT p.period_start,
            CASE WHEN COUNT(e.id) > 0 THEN 900 ELSE 0 END secs
    FROM
        (SELECT
            @begin_period := @begin_period + interval 15 MINUTE period_start,
            @end_period := @begin_period + INTERVAL 14 MINUTE period_end
        FROM
            information_schema.COLLATIONS
        CROSS JOIN
            information_schema.COLLATIONS x
        CROSS JOIN
            (SELECT @begin_period := CURRENT_DATE - INTERVAL 6 DAY - INTERVAL 15 MINUTE) var
        WHERE @begin_period + INTERVAL 29 MINUTE < CURRENT_DATE + INTERVAL 1 DAY
        ) p
    LEFT JOIN
        events e ON p.period_start < e.end_time AND p.period_end > e.start_time
    GROUP BY p.period_start
    ) t
GROUP BY adate

De subquery p genereert een dataset (virtuele tabel) met een interval van 15 minuten van de afgelopen 7 dagen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
+ ------------------- + ------------------- +
| period_start        | period_end          |
+ ------------------- + ------------------- +
| 2016-11-13 00:00:00 | 2016-11-13 00:14:00 |
| 2016-11-13 00:15:00 | 2016-11-13 00:29:00 |
| 2016-11-13 00:30:00 | 2016-11-13 00:44:00 |
| 2016-11-13 03:00:00 | 2016-11-13 03:59:00 |
.....
| 2016-11-19 22:45:00 | 2016-11-19 22:59:00 |
| 2016-11-19 23:00:00 | 2016-11-19 23:14:00 |
| 2016-11-19 23:15:00 | 2016-11-19 23:29:00 |
| 2016-11-19 23:30:00 | 2016-11-19 23:44:00 |
| 2016-11-19 23:45:00 | 2016-11-19 23:59:00 |
+ ------------------- + ------------------- +

Dan een left join op events die in dat bereik plaats hebben, en via COUNT(id) wordt dan bepaald of een bereik mee geteld moet worden.
SQL Fiddle
Gewijzigd op 19/11/2016 13:18:13 door Ger van Steenderen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.