abonnement Unibet Coolblue Bitvavo
pi_50973572
Maar zonder UNION Selects? Misschien met LIMIT?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  vrijdag 29 juni 2007 @ 16:17:29 #272
107951 JortK
Immer kwaliteitsposts
pi_50974831
quote:
Op vrijdag 29 juni 2007 16:03 schreef Chandler het volgende:
Maar zonder UNION Selects? Misschien met LIMIT?
Met LIMIT kun je één kant op, maar niet zowel het id ervoor als erna pakken. Ook kun je niet garanderen dat id 11 links id 10 en rechts id 12 heeft (als er items tussendoor worden verwijderd) wat het geheel nog wat lastiger maakt
pi_50980251
quote:
Op vrijdag 29 juni 2007 16:03 schreef Chandler het volgende:
Maar zonder UNION Selects? Misschien met LIMIT?
1
2
3
4
5
6
7
SELECT a.id,  a.name, b.id nextid,  b.name nextname, c.id previd, c.name prevname
FROM mytable a
LEFT OUTER JOIN mytable b ON b.name >= a.name AND b.id != a.id
LEFT OUTER JOIN mytable c ON c.name <= a.name AND c.id != a.id
WHERE a.id = $id
ORDER BY b.name ASC, c.name DESC
LIMIT 1


Dit zou denk ik moeten werken (maar niet getest). En 't zou best wel eens erg traag kunnen zijn.

[ Bericht 4% gewijzigd door SuperRembo op 29-06-2007 23:07:26 ]
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_50981704
Haha, ik zal het strakjes eens proberen.. tnx Sr!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50985530
Maar helaas, was leuk bedacht Sr, maar het werkte toch niet.

Krijg steeds de melding:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE a.id = 2000
LIMIT 1' at line 11

Ook met LEFT JOIN etc wilde het niet...
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50987112
Oh, de where en oder by staan verkeerd om.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_50988288
Ik bid op mijn knieën tot mysql_fetch_assoc, aangezien het mij veel geholpen heeft, en het een goddelijk commando is.

Maar bestaat er eigenlijk een kant en klare functie een een mysql_query result compleet doorloopt en alle resultaten in een 2D associatieve array stopt?
pi_50993979
quote:
Op vrijdag 29 juni 2007 23:07 schreef SuperRembo het volgende:
Oh, de where en oder by staan verkeerd om.
Dat had ik ook al geprobeerd maar gaf dezelfde foutmelding
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zaterdag 30 juni 2007 @ 10:03:35 #280
84926 WyriHaximus
Release the hounds smithers!
pi_50994308
Moet id niet zo geschreven worden ivm reserved words? `id`
phluphy for president!
pi_50994851
nee dat hoeft niet
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50995034
quote:
Op vrijdag 29 juni 2007 23:44 schreef Geqxon het volgende:
Maar bestaat er eigenlijk een kant en klare functie een een mysql_query result compleet doorloopt en alle resultaten in een 2D associatieve array stopt?
Voor SQLite heb je sqlite_fetch_all() Maar een soortgelijke functie zie ik niet voor MySql.
Gelukkig maak je die zelf in een paar minuten
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_50995088
Sterker: ATM heb ik de functie al gemaakt, ik zocht gewoon een native functie binnen PHP.
pi_50995320
quote:
Op zaterdag 30 juni 2007 09:22 schreef Chandler het volgende:

[..]

Dat had ik ook al geprobeerd maar gaf dezelfde foutmelding
Als je precies dezelfde foutmelding krijgt dan heb je de tweede keer ook nog de WHERE direct voor de LIMIT staan, dus de ORDER voor de WHERE.

Ik heb 't net getest met SQLite, daar werkt het.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  zaterdag 30 juni 2007 @ 11:39:29 #285
84926 WyriHaximus
Release the hounds smithers!
pi_50995576
1
2
3
4
5
6
7
SELECT a.id,  a.name, b.id nextid,  b.name nextname, c.id previd, c.name prevname
FROM mytable a
LEFT OUTER JOIN mytable b ON (b.name >= a.name AND b.id != a.id)
LEFT OUTER JOIN mytable c ON (c.name <= a.name AND c.id != a.id)
WHERE a.id = $id
ORDER BY b.name ASC, c.name DESC
LIMIT 1
Zo misschien? Misschien dat die haakjes uit maken
phluphy for president!
pi_50995613
quote:
Op zaterdag 30 juni 2007 11:11 schreef Geqxon het volgende:
Sterker: ATM heb ik de functie al gemaakt, ik zocht gewoon een native functie binnen PHP.
Please do share, altijd handig om kennis te vergaren enzovoorts.
pi_51002439
quote:
Op zaterdag 30 juni 2007 11:41 schreef Scorpie het volgende:

[..]

Please do share, altijd handig om kennis te vergaren enzovoorts.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$sql 
"SELECT * FROM users";
$result mysql_query($sql);

if (
$result){
    
$users mysql_fetch_all_assoc($result,"ID");
}

print_r($users);

function 
mysql_fetch_all_assoc($result,$uniquekey){
    
$all = array();
        
    while (
$row mysql_fetch_assoc($result)){
        
$all[$row[$uniquekey]] = $row;
    }
    
    return 
$all;
}
?>


Levert in mijn geval:

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Array
(
    [1] => Array
        (
            [ID] => 1
            [Username] => Geqxon
            [Userlevel] => 2
            [Password] => xxx
            [EmailAddress] => xxx
            [Timezone] => 1
            [RegIP] => 
            [DateAdded] => 0
            [DateUpdated] => 0
        )

    [8] => Array
        (
            [ID] => 8
            [Username] => Heinz
            [Userlevel] => 0
            [Password] => xxx
            [EmailAddress] => ketchup@hotmail.com
            [Timezone] => 1
            [RegIP] => 
            [DateAdded] => 0
            [DateUpdated] => 0
        )

    [21] => Array
        (
            [ID] => 21
            [Username] => Testcase
            [Userlevel] => 0
            [Password] => xxx
            [EmailAddress] => testcase@hotmail.com
            [Timezone] => 1
            [RegIP] => 
            [DateAdded] => 0
            [DateUpdated] => 0
        )

    [27] => Array
        (
            [ID] => 27
            [Username] => asdf
            [Userlevel] => 0
            [Password] => xxx
            [EmailAddress] => asdf
            [Timezone] => 1
            [RegIP] => 127.0.0.1
            [DateAdded] => 1182898662
            [DateUpdated] => 0
        )

)
pi_51013758
Zo, weer een MySQL vraagje

Mijn resultatenset van een query met een left-join heeft op sommige velden een "NULL" , omdat er geen bijpassend record is. Nu wil ik hier op filteren, maar "b.ID = NULL" of "b.ID = 'NULL'" werkt helaas niet. Wat moet ik hiervoor gebruiken?

PS: Ja, ik wil het op deze manier, en liever geen andere manier
pi_51013972
quote:
Op zaterdag 30 juni 2007 22:28 schreef Geqxon het volgende:
Zo, weer een MySQL vraagje

Mijn resultatenset van een query met een left-join heeft op sommige velden een "NULL" , omdat er geen bijpassend record is. Nu wil ik hier op filteren, maar "b.ID = NULL" of "b.ID = 'NULL'" werkt helaas niet. Wat moet ik hiervoor gebruiken?

PS: Ja, ik wil het op deze manier, en liever geen andere manier
IS NULL of IS NOT NULL dit omdat alle vergelijkingen met NULL-waardes (NULL <> NULL, NULL = NULL, etc) altijd NULL opleveren. Zo is die waarde nu eenmaal gedefiniëerd
  zaterdag 30 juni 2007 @ 22:37:23 #290
84926 WyriHaximus
Release the hounds smithers!
pi_51013973
b.ID NOT NULL overigens werkt != het zelfde als in PHP

EDIT: Erhm idd wat JeRa zegt NOT NULL is het zelfde als !=
phluphy for president!
pi_51014358
My god, dat MySQL zo simpel is. Prachtige "taal" , dat MySQL! De meest complexe querys zijn nog leesbaar, en je kunt er vanalles mee. Thanks guys!
  zaterdag 30 juni 2007 @ 22:57:38 #292
84926 WyriHaximus
Release the hounds smithers!
pi_51014511
quote:
Op zaterdag 30 juni 2007 22:51 schreef Geqxon het volgende:
My god, dat MySQL zo simpel is. Prachtige "taal" , dat MySQL! De meest complexe querys zijn nog leesbaar, en je kunt er vanalles mee. Thanks guys!
Eingelijk is SQL schitterend . SQL is de query taal om met de server te praten, MySQL is niks anders dan de server die de data opslaat . Meer info: http://en.wikipedia.org/wiki/SQL
phluphy for president!
pi_51014798
Maar qua commando's zitten er toch verschillen tussen MSSQL en MySQL? Vandaar dat ik specifiek op MySQL duidde, aangezien ik daar ATM mee werk
pi_51014891
De taal SQL zou overal gelijk moeten zijn, maar er is verschil tussen de verschillende implementaties. Zo is MySQL iets anders dan MSSQL en ook weer iets anders dan PostgeSQL en die ook weer ...

Maar de basis is bijna overal gelijk.
  zaterdag 30 juni 2007 @ 23:21:49 #295
84926 WyriHaximus
Release the hounds smithers!
pi_51015165
Idd over het algemeen is het allemaal het zelfde het verschil zal vooral in de functies, globale manier hoe de database in elkaar steekt en hele kleine syntax dingen .
phluphy for president!
pi_51017717
quote:
Op zaterdag 30 juni 2007 11:39 schreef WyriHaximus het volgende:

[ code verwijderd ]

Zo misschien? Misschien dat die haakjes uit maken
Dat werkt inderdaad wel maar......

1
2
3
1e keer: Toon Records 0 - 0 (1 totaal, Query duurde 19.0347 sec)
2e keer: 12, 5 secs
3e keer: Toon Records 0 - 0 (1 totaal, Query duurde 0.0003 sec)




en de uitkomst is niet wat ik zoek

ID = 2000

1
2
3
2000 Een jongen of een meisje 
490 een jongen of een meisje 
490 een jongen of een meisje 




[ Bericht 15% gewijzigd door Chandler op 01-07-2007 00:59:13 (-argh smilies hgra-) ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_51018111
quote:
Op zondag 1 juli 2007 00:58 schreef Chandler het volgende:

[..]

Dat werkt inderdaad wel maar......
[ code verwijderd ]



en de uitkomst is niet wat ik zoek

ID = 2000
[ code verwijderd ]

Vraagje, waarom wil je het niet via een UNION SELECT oplossen?
1) Het is sneller dan 3 losse selects via PHP
2) Zolang je de goede indices gebruikt is het praktisch net zo snel als een simpele join, maar gezien jouw wens wordt die join zo complex zal een UNION alsnog sneller worden
3) Een UNION SELECT is duidelijker (imho) dan een complexe join

pi_51021072
Wil dat dan ook draaien op MySQL 4.1.22-community-nt ?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_51026559
quote:
Op zondag 1 juli 2007 08:41 schreef Chandler het volgende:
Wil dat dan ook draaien op MySQL 4.1.22-community-nt ?
Twee seconden nazoekwerk, documentatie, vanaf MySQL 4.0.0 dus
pi_51032753
Ik zal eens kijken wat een UNION select allemaal kan
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_51065725
Slotje... heb een nieuwe vraag
The people who lost my respect will never get a capital letter for their name again.
Like trump...
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')