abonnement Unibet Coolblue Bitvavo
pi_54945205
quote:
Op vrijdag 30 november 2007 13:24 schreef Chandler het volgende:
Ik kan helaas geen select in een query gebruiken *(geen query in queries)*
Wat voor oud brak mormel gebruik je als server dat je geen nesting kunt toepassen? o|O

1
2
3
SELECT DISTINCT(b.gegeven)
FROM gegevens a LEFT JOIN gegevens b ON a.titel = b.titel
WHERE a.naam = 'land' AND a.gegeven = 'NL' AND b.naam = 'stad'

Deze dan?
Everything is possible, the impossible just takes longer.
pi_54951942
quote:
Op donderdag 29 november 2007 18:58 schreef SuperRembo het volgende:
Je hoeft toch alleen de key aan die functie door te geven? $_POST is super-global, dus die heb je ook tot je beschikking binnen de functie.
Hmm... ik gebruik feitelijk niet de $_POST array, maar een opgeschoonde array, maar het idee is goed
Die kan ik natuurlijk ook gewoon in m'n functie gebruiken, en de key als los argument meegeven...

Ik ga d'r mee aan de slag!
pi_54955179
quote:
Op vrijdag 30 november 2007 13:53 schreef Aquaatje het volgende:

[..]

Wat voor oud brak mormel gebruik je als server dat je geen nesting kunt toepassen?
[ code verwijderd ]

Deze dan?
Opzet is inderdaad goed, maar krijg ook brussel ed steden terug stom database opzet waar ik helaas niets aan kan veranderen

Maar tnx, ik ga het maar even omslachtig doen met 2 queries!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_54961000
quote:
Op vrijdag 30 november 2007 20:59 schreef Chandler het volgende:

[..]

Opzet is inderdaad goed, maar krijg ook brussel ed steden terug stom database opzet waar ik helaas niets aan kan veranderen

Maar tnx, ik ga het maar even omslachtig doen met 2 queries!
Het is mogelijk dat je niet nederlandse steden terug krijgt als je titel bij meerdere landen hoort.

kees - land - NL
kees - land - BE
kees - plaats - Amsterdam
kees - plaats - Brussel

Als je dan mijn query toepast krijg je inderdaad zowel Amsterdam als Brussel terug, want er is geen zichtbaar verschil tussen beide 'kees' entries. Dan moet je echt een tabel maken met daarin 'land' en 'plaats' gekoppeld en het niet op deze vreemde manier doen. Of je tabelstructuur aanpassen?
Everything is possible, the impossible just takes longer.
pi_54963119
Aquaatje, dat is juist het probleem; er staan geen dubbele waardes (zoals jij hebt beschreven) in deze database opzet al gaf de eigenaar van de database ook al aan dat het uitlezen van bepaalde waarden niet erg simpel is.
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_54963160
Is de data in de db wel ok?
pi_54963180
quote:
Op vrijdag 30 november 2007 11:01 schreef Chandler het volgende:

nu wil ik met een query uit deze database alle plaatsnamen halen uit Nederland (NL)

Ik heb getract met een left join query alle namen te pakken waar een property land in zit met de value NL en daarna met distinct de steden er uit te halen, maar dit werkte niet.

voorbeeld:
[ code verwijderd ]

maar helaas kreeg ik 0 resultaten wat doe ik fout?
Haal die Group By er eens uit?
pi_54963342
quote:
Op zaterdag 1 december 2007 09:29 schreef Farenji het volgende:
Is de data in de db wel ok?
Zekers, er werken meer dan 100 sites met deze database structuur!

@Light, dat levert ook niets op. Maar volgens mij wist je dat al
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_54963367
quote:
Op zaterdag 1 december 2007 10:03 schreef Chandler het volgende:

[..]

Zekers, er werken meer dan 100 sites met deze database structuur!

@Light, dat levert ook niets op. Maar volgens mij wist je dat al
Nee, ik had het niet getest.
pi_54963656
1
2
3
4
5
6
SELECT DISTINCT(d1.value) AS stad
FROM database d1
INNER JOIN database d2 ON d2.naam = d1.naam
WHERE d1.property = 'stad' 
   AND d2.property = 'land' 
   AND d2.value = 'NL'

Deze query zou echt moeten werken. Dus met een INNER JOIN, niet met een LEFT JOIN. Als dit geen resultaten oplevert dan klopt er iets niet aan de namen van de property's of value. Met de voorbeelddata die je eerder gaf moet dit "groningen" en "Amsterdam" geven. Met een LEFT JOIN krijg je alle steden terug (en dan is die hele join dus zinloos).
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_54964195
Hey Sr,

Bedankt voor je query, maar deze geeft dezefde resultaten als met een innerjoin. Ben idd ook bang dat de database eigenaar niet de juiste waarden in de database.

Ik zie touwens de fout in het database systeem

Aangezien er ook NL voor kan komen bij andere waarden (zoals spreektaal) wordt NL daar ook op gevalideerd en komt deze ook naar boven als zijnde een nederlandse plaats

Is het mogelijk om de d2.property en d2.value uit 1 regel te halen? want nu wordt het uit meerdere rijen gehaald (bv 1e rij de property en 3e rij de value?)
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_54964976
quote:
Op zaterdag 1 december 2007 11:36 schreef Chandler het volgende:
Ik zie touwens de fout in het database systeem

Aangezien er ook NL voor kan komen bij andere waarden (zoals spreektaal) wordt NL daar ook op gevalideerd en komt deze ook naar boven als zijnde een nederlandse plaats
Dat kan het probleem niet zijn want je gebruikt d2.property = 'land' AND d2.value = 'NL', dus spreektaal NL voldoet daar niet aan.
quote:
Is het mogelijk om de d2.property en d2.value uit 1 regel te halen? want nu wordt het uit meerdere rijen gehaald (bv 1e rij de property en 3e rij de value?)
d2.property = 'land' AND d2.value = 'NL' die staan dus op dezelfde regel.

Wat is eigenlijk de key van deze tabel, naam+property of naam+property+value?

[ Bericht 0% gewijzigd door SuperRembo op 01-12-2007 12:39:12 ]
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_54967457
1
2
3
4
5
6
CREATE TABLE `db1` (
  `naam` varchar(20) collate latin1_general_ci NOT NULL,
  `property` varchar(20) collate latin1_general_ci NOT NULL,
  `value` varchar(255) collate latin1_general_ci NOT NULL
  PRIMARY KEY  (`naam`,`property`,`value`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

Dit is de tabel in kwestie ;)
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_54968790
Ok, dan kunnen er per naam dus meerdere regels met property = 'land' zijn.

1
2
3
4
5
SELECT naam, Count(*) n
FROM db1
WHERE property = 'land'
GROUP BY naam
HAVING Count(*) > 1


Als deze query resultaten oplevert dan ligt daar je probleem: meerdere landen per persoon.

[ Bericht 0% gewijzigd door SuperRembo op 01-12-2007 16:17:52 ]
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_54968926
idd 13 resultaten wat erg irritant zeg
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_54969683
Hallo

ik zoek het volgende.. maar kan het niet vinden..

Ik heb 2 datums, die wil ik van elkaar aftrekken zodat je kunt zien hoeveel jaren, maanden, weken, dagen, uren, minuten en seconden er tussenzitten

dit zou heel simpel zijn wanneer elke maand exact 30 dagen had, maar aangezien het nogal een verschil maakt vanaf welke datum je begint te rekenen, is dit nogal een lastige opgave..

bestaat hier een kant en klare functie voor? ik heb er verschillende geprobeerd, maar geen enkele lijkt goed te werken..

de nerds op tweakers lijken er na 5 pagina's ook niet uit te komen..
  zaterdag 1 december 2007 @ 18:29:32 #117
84926 WyriHaximus
Release the hounds smithers!
pi_54971984
quote:
Op zaterdag 1 december 2007 16:35 schreef Schepseltje het volgende:
Hallo

ik zoek het volgende.. maar kan het niet vinden..

Ik heb 2 datums, die wil ik van elkaar aftrekken zodat je kunt zien hoeveel jaren, maanden, weken, dagen, uren, minuten en seconden er tussenzitten

dit zou heel simpel zijn wanneer elke maand exact 30 dagen had, maar aangezien het nogal een verschil maakt vanaf welke datum je begint te rekenen, is dit nogal een lastige opgave..

bestaat hier een kant en klare functie voor? ik heb er verschillende geprobeerd, maar geen enkele lijkt goed te werken..

de nerds op tweakers lijken er na 5 pagina's ook niet uit te komen..
Wat nou als je er per secconde door heen loopt en steeds als je een grens (dag/maand) over gaat stel je een tellertje bij?
phluphy for president!
pi_54972356
quote:
Op zaterdag 1 december 2007 18:29 schreef WyriHaximus het volgende:

[..]

Wat nou als je er per secconde door heen loopt en steeds als je een grens (dag/maand) over gaat stel je een tellertje bij?
ja maar hoeveel seconden heeft een maand? februari heeft er minder dan december
pi_54972882
quote:
Op zaterdag 1 december 2007 18:47 schreef Schepseltje het volgende:

[..]

ja maar hoeveel seconden heeft een maand? februari heeft er minder dan december
Dat hoef je niet te weten, je zet de startdatum om naar een timestamp, telt er 1 bij op en zet de timestamp weer om naar een datum. Hier zijn functies voor in php. En dit doe je net zo lang tot de timestamp groter of gelijk is als de timestamp van de einddatum. Elke keer check je of de dag-, maand- of het jaargetal is veranderd tov de vorige datum en dit hou je bij.

Overigens is per seconde door de range loopen wel erg inefficient, je kan beter per 23*60*60 - 1 secondes loopen - een dag is nl nooit korter dan 23 uur en dus zal er nooit meer dan 1 dag verschil zijn.
pi_54974460
Ik heb het nu zo gedaan.. lijkt te werken

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
function datediff($date1,$date2)
{
    
$timediff =intval$date1-$date2 ); 
    if (
$timediff<0) { $timediff $timediff * -1$t=$date1$date1=$date2$date2=$t; } // als het verschil negatief is, maak het positief

    
$years 0;
    
$months 0;
    
$days=intval($timediff/86400); $remain=$timediff%86400;
    
$hours=intval($remain/3600); $remain=$remain%3600;
    
$mins=intval($remain/60);
    
$secs=$remain%60;
    
    for (;;)
    {
        
$no_of_days_in_month=date("t",mktime(0,0,0,date("m",$date1),0,date("Y",$date1))); // dagen in de maand
        
if ($months>11) { $months 0$years++;  }
        if (
$no_of_days_in_month<=$days
        {        
            
$days=$days-$no_of_days_in_month;
            
$date1 $date1 $no_of_days_in_month*86400;
            
$months++;
        }
        else { break; }
    }

    if (
$years>0)     { $output .= "$years jaar, "; }
    if (
$months>0)     { if ($months==1)     { $output .= "1 maand, "; } else     { $output .= "$months maanden, "; } }
    if (
$days>0)     { if ($days==1)     { $output .= "1 dag, "; } else         { $output .= "$days dagen, "; } }    
    if (
$hours>0)     { if ($hours==1)     { $output .= "1 uur, "; } else         { $output .= "$hours uren, "; } }
    if (
$mins>0)     { if ($mins==1)     { $output .= "1 minuut, "; } else     { $output .= "$mins minuten, "; } }    
    if (
$secs>0)    { if ($secs==1)     { $output .= "1 seconde, "; } else     { $output .= "$secs seconden, "; } }        
    
    return 
substr($output,0,-2);
}
?>


[ Bericht 8% gewijzigd door Schepseltje op 02-12-2007 00:20:57 ]
  zaterdag 1 december 2007 @ 20:16:54 #121
84926 WyriHaximus
Release the hounds smithers!
pi_54974521
quote:
Op zaterdag 1 december 2007 19:11 schreef Farenji het volgende:

[..]

Dat hoef je niet te weten, je zet de startdatum om naar een timestamp, telt er 1 bij op en zet de timestamp weer om naar een datum. Hier zijn functies voor in php. En dit doe je net zo lang tot de timestamp groter of gelijk is als de timestamp van de einddatum. Elke keer check je of de dag-, maand- of het jaargetal is veranderd tov de vorige datum en dit hou je bij.

Overigens is per seconde door de range loopen wel erg inefficient, je kan beter per 23*60*60 - 1 secondes loopen - een dag is nl nooit korter dan 23 uur en dus zal er nooit meer dan 1 dag verschil zijn.
Precies, en als je het op de dag af weet is het laatste stukkie een makkie .Ben lekker wakker vandaag .
phluphy for president!
pi_54976845
quote:
Op zaterdag 1 december 2007 16:35 schreef Schepseltje het volgende:
Hallo

ik zoek het volgende.. maar kan het niet vinden..

Ik heb 2 datums, die wil ik van elkaar aftrekken zodat je kunt zien hoeveel jaren, maanden, weken, dagen, uren, minuten en seconden er tussenzitten

dit zou heel simpel zijn wanneer elke maand exact 30 dagen had, maar aangezien het nogal een verschil maakt vanaf welke datum je begint te rekenen, is dit nogal een lastige opgave..

bestaat hier een kant en klare functie voor? ik heb er verschillende geprobeerd, maar geen enkele lijkt goed te werken..

de nerds op tweakers lijken er na 5 pagina's ook niet uit te komen..
Als je die data in timestamps hebt dan kun je die toch gewoon van elkaar aftrekken? Dan heb je het verschil tussen de data, in seconden. Da's wel om te rekenen naar minuten-uren-dagen, lijkt me
  zaterdag 1 december 2007 @ 21:54:40 #123
84926 WyriHaximus
Release the hounds smithers!
pi_54977245
quote:
Op zaterdag 1 december 2007 21:40 schreef Light het volgende:

[..]

Als je die data in timestamps hebt dan kun je die toch gewoon van elkaar aftrekken? Dan heb je het verschil tussen de data, in seconden. Da's wel om te rekenen naar minuten-uren-dagen, lijkt me
Als je zoals hij zegt er van uit gaat dat er 30 dagen in een maand zitten en 365 dagen in een jaar is dat een makkie. Alleen wil je dit precies doen dan word het in eens een stuk moeilijker, en dat is nou net wat hij wil .
phluphy for president!
pi_54977418
quote:
Op zaterdag 1 december 2007 21:40 schreef Light het volgende:

[..]

Als je die data in timestamps hebt dan kun je die toch gewoon van elkaar aftrekken? Dan heb je het verschil tussen de data, in seconden. Da's wel om te rekenen naar minuten-uren-dagen, lijkt me
Tot dagen wel, maar hij wil het verder omrekenen naar maanden en jaren. Zie ook 't GoT topic.

Als je het verschil in jaren, maanden, dagen, uren etc wil hebben dan zal je bij de jaren moeten beginnen, daarna het aantal resterende maanden etc. Ik vraag me af of je het helemaal waterdicht kan krijgen.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_54977520
quote:
Op zaterdag 1 december 2007 22:01 schreef SuperRembo het volgende:

[..]

Tot dagen wel, maar hij wil het verder omrekenen naar maanden en jaren. Zie ook 't GoT topic.

Als je het verschil in jaren, maanden, dagen, uren etc wil hebben dan zal je bij de jaren moeten beginnen, daarna het aantal resterende maanden etc. Ik vraag me af of je het helemaal waterdicht kan krijgen.
ik zou zeggen probeer mijn code eens.. lijkt waterdicht

als ik voor begindatum 0 invul (01-01-1970) dan geeft ie

jaar: 37
maanden: 11
dagen: 0
uren: 22
minuten: 4
seconden: 50

als er ook maar 1 foutje in zit dan moet dat over een periode van 37 jaar wel opvallen
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')