abonnement Unibet Coolblue Bitvavo
pi_109839661
Volgens mij is je gebundelde query niet hetzelfde als je drie verschillende queries.

[ Bericht 12% gewijzigd door #ANONIEM op 03-04-2012 10:07:40 ]
pi_109839811
quote:
0s.gif Op dinsdag 3 april 2012 10:07 schreef Scorpie het volgende:
Volgens mij is je gebundelde query niet hetzelfde als je drie verschillende queries.
Ja zoiets vermoed ik ook al. Hij gaat, denk ik, een relatie zoeken waarmee de where clause overeenstemt. Dus hij zoekt ook in de lege tabel een record met ID='2', die dus niet bestaat en dus oneindig lang gaat zoeken?

Is er dan een manier zodat hij dat niet doet? Of is er een andere manier om de resultaten van mijn query simpel te mergen? (Zoals gezegd een union gaat helaas niet).
  dinsdag 3 april 2012 @ 10:13:57 #153
267443 Cue_
Cuecumbergirl
pi_109839824
Moet je niet een OR gebruiken ipv een AND?
  dinsdag 3 april 2012 @ 10:16:24 #154
299167 stefanhaan
Bloeddorstige wasbeer
pi_109839892
quote:
0s.gif Op dinsdag 3 april 2012 10:07 schreef Scorpie het volgende:
Volgens mij is je gebundelde query niet hetzelfde als je drie verschillende queries.
Dit.
Allereerst je tabel namen in een enkele query is nergens voor nodig. Dus maak het je niet onnodig lastig dat je alle velden vanuit je query via t.** moet benaderen maar gewoon **.

De TOP tag werkt alleen in SQL server (Dacht ik) dus kan je beter LIMIT gebruiken doet exact hetzelfde en is vrijwel overal ondersteunt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SELECT TOP 1
    t.IETS1,
    t.IETS2
FROM
    TABEL1 AS t
WHERE 
    t.ID='2'

SELECT TOP 1
    q.IETS3
FROM
    TABEL2 AS q
WHERE
    q.ID='2'

SELECT TOP 1
    s.IETS4
    s.IETS5
    s.IETS6
FROM
    TABEL3 AS s
WHERE
    s.ID='2'

=>

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
SELECT 
    veld1
   veld2
FROM
    tabel1
WHERE 
   id='2'
LIMIT 1

UNION

SELECT 
    veld3
FROM
    tabel2
WHERE
    id='2'
LIMIT 1

UNION

SELECT
    veld4
    veld5
    veld6
FROM
   tabel3
WHERE
    id='2'
LIMIT 1

Alleen hou deze restricties in je achterhoofd:
quote:
* The number of columns in each SELECT statement has to be the same .
* The data type of the column in the column list of the SELECT statement must be the same or at least convertible.
It was an opportunity to honour our memories and to make room for new ones
pi_109840058
quote:
10s.gif Op dinsdag 3 april 2012 10:16 schreef stefanhaan het volgende:

[..]

Dit.
Allereerst je tabel namen in een enkele query is nergens voor nodig. Dus maak het je niet onnodig lastig dat je alle velden vanuit je query via t.** moet benaderen maar gewoon **.

De TOP tag werkt alleen in SQL server (Dacht ik) dus kan je beter LIMIT gebruiken doet exact hetzelfde en is vrijwel overal ondersteunt.
[ code verwijderd ]

=>
[ code verwijderd ]

Alleen hou deze restricties in je achterhoofd:

[..]

I know ;) maar het was even handig nu met copy-paste :P en LIMIT wordt in mijn geval, MS SQL server, niet ondersteund. Maar evengoed datgene wat je post heb ik dus geprobeerd en werkt niet omdat het aantal kolommen niet gelijk is.

quote:
0s.gif Op dinsdag 3 april 2012 10:13 schreef Cue_ het volgende:
Moet je niet een OR gebruiken ipv een AND?
Gedaan, had geen effect, hoewel ik wel idd dacht dat dit zou werken.
  dinsdag 3 april 2012 @ 10:24:24 #156
299167 stefanhaan
Bloeddorstige wasbeer
pi_109840085
Daarom poste ik ook dit.
quote:
* The number of columns in each SELECT statement has to be the same .
* The data type of the column in the column list of the SELECT statement must be the same or at least convertible.
Dan zou je net zo goed de 3 query's afzonderlijk kunnen doen of via een JOIN. Maar ik weet niet waarvoor je het wil gebruiken dus wat meer info misschien? :9
It was an opportunity to honour our memories and to make room for new ones
pi_109840321
quote:
10s.gif Op dinsdag 3 april 2012 10:24 schreef stefanhaan het volgende:
Daarom poste ik ook dit.

[..]

Dan zou je net zo goed de 3 query's afzonderlijk kunnen doen of via een JOIN. Maar ik weet niet waarvoor je het wil gebruiken dus wat meer info misschien? :9
Klopt de drie queries kan ik ook afzonderlijk doen. Alleen wil ik het netwerkverkeer minimaliseren. Wat ik nu eerst dus wil doen is gewoon de resultaten van de 3 queries combineren, achter elkaar zetten dus. Zodat ik het resultaat daarna in 1 brok wordt verstuurd i.p.v. 3 brokken. Daarna gooi ik de boel nog in een storedprocedure.

Ik had net ook nog geprobeerd met een FULL OUTER JOIN maar daarbij zelfde resultaat.
  dinsdag 3 april 2012 @ 10:36:17 #158
299167 stefanhaan
Bloeddorstige wasbeer
pi_109840394
quote:
7s.gif Op dinsdag 3 april 2012 10:33 schreef Dale. het volgende:

[..]

Klopt de drie queries kan ik ook afzonderlijk doen. Alleen wil ik het netwerkverkeer minimaliseren. Wat ik nu eerst dus wil doen is gewoon de resultaten van de 3 queries combineren, achter elkaar zetten dus. Zodat ik het resultaat daarna in 1 brok wordt verstuurd i.p.v. 3 brokken. Daarna gooi ik de boel nog in een storedprocedure.

Ik had net ook nog geprobeerd met een FULL OUTER JOIN maar daarbij zelfde resultaat.
Sowieso als je alleen de top 5 resultaten terug laat sturen. Vind er vrijwel geen netwerkverkeer plaats omdat je maar 15 rows retourneerd ipv 15000 bv. Dus is het in dit geval wel verwaarloosbaar.
It was an opportunity to honour our memories and to make room for new ones
pi_109840463
quote:
10s.gif Op dinsdag 3 april 2012 10:36 schreef stefanhaan het volgende:

[..]

Sowieso als je alleen de top 5 resultaten terug laat sturen. Vind er vrijwel geen netwerkverkeer plaats omdat je maar 15 rows retourneerd ipv 15000 bv. Dus is het in dit geval wel verwaarloosbaar.
True maar niet als er grofweg 10.000 pc's dit iedere 5 seconde gaan doen :P
  dinsdag 3 april 2012 @ 10:41:10 #160
299167 stefanhaan
Bloeddorstige wasbeer
pi_109840560
quote:
7s.gif Op dinsdag 3 april 2012 10:38 schreef Dale. het volgende:

[..]

True maar niet als er grofweg 10.000 pc's dit iedere 5 seconde gaan doen :P
Zelfs dan valt het nog mee mits goede server.
It was an opportunity to honour our memories and to make room for new ones
pi_109840651
quote:
10s.gif Op dinsdag 3 april 2012 10:41 schreef stefanhaan het volgende:

[..]

Zelfs dan valt het nog mee mits goede server.
Die is er niet maar goed :') krijg ik nog een antwoord :P of blijft dit een ja-dit-ja-zus gesprek hahaha want ik wil de resultaten toch combineren.
  dinsdag 3 april 2012 @ 10:45:07 #162
75592 GlowMouse
l'état, c'est moi
pi_109840717
UNION was toch al genoemd?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_109840756
quote:
0s.gif Op dinsdag 3 april 2012 10:45 schreef GlowMouse het volgende:
UNION was toch al genoemd?
quote:
en werkt niet omdat het aantal kolommen niet gelijk is.
  dinsdag 3 april 2012 @ 10:50:30 #164
75592 GlowMouse
l'état, c'est moi
pi_109840915
Andere oplossingen worden echt lelijk :')

hoofdletters als tabel-/kolomnamen zijn echt lelijk :')

SELECT t.IETS1,t.IETS2,q.IETS3,q.IETS4
FROM TABEL1 AS t
LEFT JOIN TABEL 2 AS q ON(q.ID=2)
WHERE t.ID=2
LIMIT 1
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 3 april 2012 @ 10:54:08 #165
75592 GlowMouse
l'état, c'est moi
pi_109841055
Het is mooier om, als je maar één kolom hebt en bij een andere twee kolommen, toch UNION te gebruiken en dan ipv select veld1 te doen: select veld1,0
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_109841912
quote:
0s.gif Op dinsdag 3 april 2012 10:50 schreef GlowMouse het volgende:
Andere oplossingen worden echt lelijk :')

hoofdletters als tabel-/kolomnamen zijn echt lelijk :')

SELECT t.IETS1,t.IETS2,q.IETS3,q.IETS4
FROM TABEL1 AS t
LEFT JOIN TABEL 2 AS q ON(q.ID=2)
WHERE t.ID=2
LIMIT 1
Okee! En ja sorry ik heb het database schema niet gemaakt :') maar ander vraagje... Ik hou het dus gewoon bij 3 queries... Maar kan ik dan de resultaten in sql makkelijk mergen?

Ik heb dan dus zoiets als

@SET result1 = SELECT ...
@SET result2 = SELECT ...
@SET result3 = SELECT ...

Waarbij result1,2 en 3 dus iets zijn als
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-----------
| a1 | a2 |
-----------

----------------
| b1 | b2 | b3 |
----------------

------
| c1 |
------

Wordt

-------------------------------
| a1 | a2 | b1 | b2 | b3 | c1 |
-------------------------------

quote:
0s.gif Op dinsdag 3 april 2012 10:54 schreef GlowMouse het volgende:
Het is mooier om, als je maar één kolom hebt en bij een andere twee kolommen, toch UNION te gebruiken en dan ipv select veld1 te doen: select veld1,0
Dat zou idd werken helaas merk ik net dat ik dan nog tegen een conversie fout aanloop :')
  dinsdag 3 april 2012 @ 11:35:09 #167
75592 GlowMouse
l'état, c'est moi
pi_109842741
Nee dat kan niet. De methode van joinen is het enige alternatief op union dat ik kan bedenken.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_109842771
quote:
0s.gif Op dinsdag 3 april 2012 11:35 schreef GlowMouse het volgende:
Nee dat kan niet. De methode van joinen is het enige alternatief op union dat ik kan bedenken.
Oke thanks. Dan gewoon maar een loopje en in de programmeertaal mergen.
pi_109842931
Ik kwam dit lelijke stukje code tegen in de code van een oud werknemer.

1
2
$var = false;
$arr = array("key" => $var['key']);

De verwachting is dat hij eruit klapt met een undefined index, maar blijkbaar mag dit. Is dit nieuw?
Als $var gedefinieerd wordt als $var = array(), doet hij dat wel namelijk.
  dinsdag 3 april 2012 @ 21:09:03 #170
370539 kucher
is snucher
pi_109867339
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   SELECT TOP 1
      t.iets1,
      t.iets2,
      NULL
   FROM tabel1 AS t
   WHERE t.id=2
UNION ALL
   SELECT TOP 1
      q.iets3,
      NULL,
      NULL
   FROM tabel2 AS q
   WHERE q.id=2
UNION ALL
   SELECT TOP 1
      s.iets4
      s.iets5
      s.iets6
   FROM tabel3 AS s
   WHERE s.id=2
  donderdag 5 april 2012 @ 11:47:52 #171
118585 Crutch
Filantroop || Taalzwengel
pi_109933301
Hoe zou ik accessoires gerelateerd kunnen maken aan meerdere producten?
Zelf zat ik te denken aan een cel met kommagescheiden waarden(id's) waar het product bij zou passen, maar wordt een query dan niet ongelofelijk omslachtig?

En zou ik die accessoires in dezelfde tabel als de producten mogen zetten?
Je moeder is een hamster
  donderdag 5 april 2012 @ 11:48:35 #172
56176 Catch22-
Ben je Blind?!
pi_109933328
koppeltabel maken?

product_id | accessoire_id

?

en dan een gecombineerde sleutel maken
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
  donderdag 5 april 2012 @ 11:48:59 #173
299167 stefanhaan
Bloeddorstige wasbeer
pi_109933343
quote:
11s.gif Op donderdag 5 april 2012 11:48 schreef Catch22- het volgende:
koppeltabel maken?

product_id | accessoire_id

?

en dan een gecombineerde sleutel maken
Dat lijkt me wel de beste oplossing. En het simpelst om te implementeren.
It was an opportunity to honour our memories and to make room for new ones
  donderdag 5 april 2012 @ 11:50:07 #174
56176 Catch22-
Ben je Blind?!
pi_109933393
Ik mis het devven soms best wel. Ben nu fulltime met de frontend bezig (en interaction design), maar backenddevelopment kan toch ook wel tof zijn soms.

Maarja, je kan niet alles doen he
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
  donderdag 5 april 2012 @ 11:51:25 #175
118585 Crutch
Filantroop || Taalzwengel
pi_109933447
Ok, koppeltabel dus. :)

Hoe moet ik die structuur voor me zien?
Je moeder is een hamster
  donderdag 5 april 2012 @ 12:16:19 #176
118585 Crutch
Filantroop || Taalzwengel
pi_109934346
Zoiets begrijp ik?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
productentabel
| id | productnaam   |
|  1 | Apparaat 1    |
|  2 | Apparaat 2    |
|  3 | Apparaat 3    |
|  4 | Accessoire 1  |
|  5 | Accessoire 2  |

Dus als accessoire 1 bij product 2 en 3 hoort 
en accessoire 2 bij product 1 en 2 dan zal het als volgt
moeten in een relatietabel?

productenrelatiestabel
| id | accessoire_id | gerelateerd_product_id |
|  1 |      4        |            2           |
|  2 |      4        |            3           |
|  3 |      5        |            1           |
|  4 |      5        |            2           |
Je moeder is een hamster
  donderdag 5 april 2012 @ 13:06:28 #177
75592 GlowMouse
l'état, c'est moi
pi_109936176
maar dan zonder id in de tweede tabel
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  donderdag 5 april 2012 @ 13:09:14 #178
56176 Catch22-
Ben je Blind?!
pi_109936295
en je maakt van accessoire_id en product_id (niet gerelateerd_product_id) een composite key. Hiermee dwing je uniqueness af.
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
  donderdag 5 april 2012 @ 13:33:30 #179
118585 Crutch
Filantroop || Taalzwengel
pi_109937200
quote:
0s.gif Op donderdag 5 april 2012 13:06 schreef GlowMouse het volgende:
maar dan zonder id in de tweede tabel
quote:
11s.gif Op donderdag 5 april 2012 13:09 schreef Catch22- het volgende:
en je maakt van accessoire_id en product_id (niet gerelateerd_product_id) een composite key. Hiermee dwing je uniqueness af.
Dus 'id' is niet verplicht in een tabel? Nou mooi, kan die weg. ;)

En wat Catch22- zegt, bedoel je daarmee dat ik een kolom moet toevoegen waarin ik aangeef bij welk product(id) deze niet hoort?
Wat is daar het praktisch nut van?
Je moeder is een hamster
pi_109938236
hij bedoelt dat het woordje "gerelateerd" een beetje onzinnige toevoeging is aan de kolom-naam. Beter weglaten.

En als tweede bedoelt hij, dat je een key ook over meerdere kolommen kan defineren. Daarom is de kolom ID overbodig. Aangezien de combinatie [accessoire_id + product_id] sowieso al uniek is.
  donderdag 5 april 2012 @ 13:57:14 #181
56176 Catch22-
Ben je Blind?!
pi_109938334
quote:
0s.gif Op donderdag 5 april 2012 13:33 schreef Crutch het volgende:

[..]

[..]

Dus 'id' is niet verplicht in een tabel? Nou mooi, kan die weg. ;)

En wat Catch22- zegt, bedoel je daarmee dat ik een kolom moet toevoegen waarin ik aangeef bij welk product(id) deze niet hoort?
Wat is daar het praktisch nut van?
Met een koppeltabel geef je aan welke 2 entiteiten bijelkaar horen. Deze combinatie is uniek. Dit stel je in door een composite key te gebruiken. Hierdoor heeft die rij niet nog een eigen id nodig, want zijn unique identifier is de composite key :)

en in een koppeltabel zijn beide id's "gerelateerd_", dus dat moet je gewoon weglaten.
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
  donderdag 5 april 2012 @ 14:03:12 #182
118585 Crutch
Filantroop || Taalzwengel
pi_109938578
quote:
14s.gif Op donderdag 5 april 2012 13:55 schreef KomtTijd... het volgende:
hij bedoelt dat het woordje "gerelateerd" een beetje onzinnige toevoeging is aan de kolom-naam. Beter weglaten.

En als tweede bedoelt hij, dat je een key ook over meerdere kolommen kan defineren. Daarom is de kolom ID overbodig. Aangezien de combinatie [accessoire_id + product_id] sowieso al uniek is.
Oh, lol. Die kolomnamen zijn hier puur ter illustratie.
Je moeder is een hamster
  donderdag 5 april 2012 @ 14:05:56 #183
118585 Crutch
Filantroop || Taalzwengel
pi_109938680
Maar hoe werkt zo'n composite key?
Kan iemand mij een voorbeeld geven?
Je moeder is een hamster
pi_109959785
quote:
0s.gif Op donderdag 5 april 2012 14:05 schreef Crutch het volgende:
Maar hoe werkt zo'n composite key?
Kan iemand mij een voorbeeld geven?
Je hebt 2 hoofdtabellen:
Users met info en id
Rights met naam van rechten etc en id

UserRights met user_id en rights_id

Je kunt dus voor 1 user meerdere rechten toekennen en andersom.
Zoiets dus:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT 
Users.*, Rights.name
FROM
Users
INNER JOIN
UserRights
ON
UserRights.user_id = Users.id
INNER JOIN
Rights
ON
Rights.id = UserRights.right_id
WHERE
Users.id = 1
pi_109960646
quote:
0s.gif Op donderdag 5 april 2012 14:05 schreef Crutch het volgende:
Maar hoe werkt zo'n composite key?
Kan iemand mij een voorbeeld geven?
1
2
3
4
5
6
CREATE TABLE `user_rights` (
      `user_id` INT NOT NULL
    , `right_id` INT NOT NULL
    , PRIMARY KEY(`user_id`, `right_id`)
    , INDEX (`right_id`)
);
Zo ongeveer. De combinatie van user_id en right_id is uniek, en de primary key werkt tevens als index op user_id (voor als je alle rechten van een user wilt zoeken). De index op right_id is handig als je wilt weten welke users een bepaald right hebben. (Eigenlijk wil je in zo'n koppeltabel altijd beide kanten op kunnen zoeken en daarbij gebruik maken van een index.)
  donderdag 5 april 2012 @ 22:16:44 #186
118585 Crutch
Filantroop || Taalzwengel
pi_109960824
^O^ Tof!
Ik ga er morgen even mee klooien. Beiden bedankt. :)
Je moeder is een hamster
  FOK!-Schrikkelbaas donderdag 5 april 2012 @ 23:07:50 #187
1972 Swetsenegger
Egocentrische Narcist
pi_109963704
Ik heb weer eens een query vraagje.

Ik heb een nested set model en nu wil ik van een bepaald groepjes nodes de parent naam achterhalen

1
2
3
4
5
6
SELECT parent.name AS parentName, products.*
FROM nested_menu AS node, nested_menu AS parent, produkten AS products
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.menu_id = products.product_menu
AND products.highlight=1
GROUP BY product_id ORDER BY parentName, first_price ASC

Dit werkt bijna Het gaat mis bij nodes die 2 niveaus diep zitten.

aan deze query moet een where worden toegevoegd:
1AND node.lft > parent.lft IF product_id <van deze rij> != product_id <vorige rij>

is dit uberhaupt mogelijk?
pi_109964120
quote:
5s.gif Op donderdag 5 april 2012 23:07 schreef Swetsenegger het volgende:
Ik heb weer eens een query vraagje.

Ik heb een nested set model en nu wil ik van een bepaald groepjes nodes de parent naam achterhalen
[ code verwijderd ]

Dit werkt bijna Het gaat mis bij nodes die 2 niveaus diep zitten.

aan deze query moet een where worden toegevoegd:
[ code verwijderd ]

is dit uberhaupt mogelijk?
Je kunt hier even kijken (al lijkt je query er al een beetje op)
http://stackoverflow.com/(...)e-children-of-a-node
Eerlijk gezegd zet ik nooit alles in 1 grote query vaak maakt dit dingen alleen maar langzamer dan bijvoorbeeld een paar losse :P (niet altijd hoor).
pi_109964526
quote:
5s.gif Op donderdag 5 april 2012 23:07 schreef Swetsenegger het volgende:
Ik heb weer eens een query vraagje.

Ik heb een nested set model en nu wil ik van een bepaald groepjes nodes de parent naam achterhalen
[ code verwijderd ]

Dit werkt bijna Het gaat mis bij nodes die 2 niveaus diep zitten.

aan deze query moet een where worden toegevoegd:
[ code verwijderd ]

is dit uberhaupt mogelijk?
Is het niet makkelijker om te stellen dat node.id != parent.id ? Volgens mij ben je er al als je dat toeveoegt aan je query.
pi_109964667
quote:
0s.gif Op donderdag 5 april 2012 23:16 schreef totalvamp het volgende:

[..]

Je kunt hier even kijken (al lijkt je query er al een beetje op)
http://stackoverflow.com/(...)e-children-of-a-node
Eerlijk gezegd zet ik nooit alles in 1 grote query vaak maakt dit dingen alleen maar langzamer dan bijvoorbeeld een paar losse :P (niet altijd hoor).
Als je de indexen goed hebt, kun je behoorlijk grote query's nog snel uitvoeren. Meerdere query's maken kan ook, maar dat vereist weer extra logica in PHP en die kost ook tijd.
  FOK!-Schrikkelbaas vrijdag 6 april 2012 @ 20:38:24 #191
1972 Swetsenegger
Egocentrische Narcist
pi_109997352
quote:
0s.gif Op donderdag 5 april 2012 23:25 schreef Light het volgende:

[..]

Is het niet makkelijker om te stellen dat node.id != parent.id ? Volgens mij ben je er al als je dat toeveoegt aan je query.
Nee, zelfde probleem... als je maar 1 niveau diep bent klopt dat namelijk wel.
pi_110002233
quote:
0s.gif Op vrijdag 6 april 2012 20:38 schreef Swetsenegger het volgende:

[..]

Nee, zelfde probleem... als je maar 1 niveau diep bent klopt dat namelijk wel.
Hmm... 't klinkt wel als een leuk probleem :)
  FOK!-Schrikkelbaas vrijdag 6 april 2012 @ 22:05:28 #193
1972 Swetsenegger
Egocentrische Narcist
pi_110002421
quote:
0s.gif Op vrijdag 6 april 2012 22:02 schreef Light het volgende:

[..]

Hmm... 't klinkt wel als een leuk probleem :)
:D Ik heb het maar opgelost door het hoogste niveau een tag te geven en op die tag te filteren.
Niet mooi zeker niet binnen de elegante nested set oplossing, wel effectief.
pi_110002800
quote:
7s.gif Op vrijdag 6 april 2012 22:05 schreef Swetsenegger het volgende:

[..]

:D Ik heb het maar opgelost door het hoogste niveau een tag te geven en op die tag te filteren.
Niet mooi zeker niet binnen de elegante nested set oplossing, wel effectief.
Da's ook een optie natuurlijk. Maar ik wil wel proberen een nettere oplossing te vinden. Moet ik alleen eerst die tabelstructuur voor mezelf helder krijgen.
  vrijdag 6 april 2012 @ 22:32:47 #195
75592 GlowMouse
l'état, c'est moi
pi_110004052
quote:
7s.gif Op vrijdag 6 april 2012 22:05 schreef Swetsenegger het volgende:

[..]

:D Ik heb het maar opgelost door het hoogste niveau een tag te geven en op die tag te filteren.
Niet mooi zeker niet binnen de elegante nested set oplossing, wel effectief.
http://crisp.tweakblogs.n(...)-only-one-query.html
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  FOK!-Schrikkelbaas vrijdag 6 april 2012 @ 22:39:41 #196
1972 Swetsenegger
Egocentrische Narcist
pi_110004456
quote:
Ow maar mijn menu tree opbouwen doe ik ook met 1 query.

1
2
3
4
5
6
SELECT parent.".$menuName." AS parentname, node.menu_id, node.".$menuName." AS name, node.lft, node.rgt, (
       COUNT( parent.".$menuName." ) -1) AS depth
       FROM nested_menu AS node, nested_menu AS parent
       WHERE node.lft BETWEEN parent.lft AND parent.rgt
       GROUP BY node.menu_id
       ORDER BY node.lft
  vrijdag 6 april 2012 @ 22:43:15 #197
75592 GlowMouse
l'état, c'est moi
pi_110004628
Jouw query is lelijker omdat hij niet via indices gesorteerd kan worden.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  FOK!-Schrikkelbaas vrijdag 6 april 2012 @ 22:52:35 #198
1972 Swetsenegger
Egocentrische Narcist
pi_110005145
quote:
0s.gif Op vrijdag 6 april 2012 22:43 schreef GlowMouse het volgende:
Jouw query is lelijker omdat hij niet via indices gesorteerd kan worden.
Ow vast, maar ik heb nu een menu tree waar je zonder problemen items tussen kan voegen, kan deleten, op kan schuiven, etc.

Ideaal om klanten via een cmsje zelf een menu te laten bouwen. En ja... daar komen misschien 40 records in. Deze query draait in 15.2ms voor het volledige menu.
  zaterdag 7 april 2012 @ 11:42:21 #199
267547 smegmanus
FOK! ambassadeur
pi_110017732
Ik wil een path veranderen (voor een applicatie die foto's weg schrijft naar een bepaalde dir) en gebruik het volgende command:

1UPDATE image SET path = UPDATE(path, d:/dir/dir2,g:/dir/dir2); 

Het werkt echter niet, wat doe ik verkeerd? :@
Op donderdag 15 januari 2015 19:01 schreef Maanvis het volgende:
smegmanus is de as van het kwaad. een verbrand stukje Hitler.
  zaterdag 7 april 2012 @ 11:44:54 #200
299167 stefanhaan
Bloeddorstige wasbeer
pi_110017799
quote:
7s.gif Op zaterdag 7 april 2012 11:42 schreef smegmanus het volgende:
Ik wil een path veranderen (voor een applicatie die foto's weg schrijft naar een bepaalde dir) en gebruik het volgende command:
[ code verwijderd ]

Het werkt echter niet, wat doe ik verkeerd? :@
1
2
3
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value

Dus moet het worden

1
2
3
UPDATE image
SET path = "d:/dir/dir2"
WHERE id=xx

Bv. of gebruik je mysql procedures / functions?
It was an opportunity to honour our memories and to make room for new ones
  zaterdag 7 april 2012 @ 11:47:02 #201
370539 kucher
is snucher
pi_110017856
Bewaar alleen het relatieve pad in je db, bedank me later.
  zaterdag 7 april 2012 @ 11:50:57 #202
267547 smegmanus
FOK! ambassadeur
pi_110017951
We gaan eens testen, bedankt voor zover.
Op donderdag 15 januari 2015 19:01 schreef Maanvis het volgende:
smegmanus is de as van het kwaad. een verbrand stukje Hitler.
pi_110030671
Heren,

Ik hoop dat jullie me weer eens kunnen helpen.
Ik ben iets aan het bouwen dat de usertabellen van vbullentin 4 gebruikt.
Hierin staat de usertimezone welke het verschil van hun tijd zone met GMT. bijvoorbeeld voor mijzelf +1

In mijn script wil ik data gaan opslaan en voor iedereen in de goede tijd weergeven.
Dat leek mij vrij simpel.
De user geeft een datum en tijd in, hier maak ik een tijdstamp van dmv mktime.
Daar haal ik het verschil aan uren vergeleken met gmt af om de gmt tijd te krijgen.
Deze sla ik op en als ik deze uit de database haal reken ik deze weer om naar de tijdzone van de user.

de server staat op -5 van gmt, dit verreken ik als ik time() aanroep.
Ik heb ook geprobeerd om de default tijd zonde van de server op gmt te zetten.

Ik krijg het alleen niet voor elkaar om de datums goed te krijgen, misschien dat ik er gister te lang naar heb zitten staren...

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
<?php
date_default_timezone_set('GMT');
function serverToGMTStamp() { // replaces time
    return  time();//-((date("O") / 100)*60*60);// server timestamp to gmt timestmap
}

function userInputToGMTStamp($userStamp,$userTimeZone) { // to be saved to database
    return  $userStamp-($userTimeZone*60*60);// user timestamp to gmt timestmap
}

function gmtToUserTime($gmtStamp,$userTimeZone,$format="d-m-Y H:i") { // displayed date /time in user timezone
    return date($format,$gmtStamp+($userTimeZone*60*60));
}
function inputTimetoStamp($input){
    if($input){    
        list($date, $time) = explode(' ',$input);
        list($hour, $minute) = explode(':',$time);
        list($month, $day, $year) = explode('/',$date);
        $input = mktime ($hour, $minute, 0, $day, $month, $year);
        return $input;
    }
}

$databaseDate = '04/06/2012 20:00'; //date in database already
$userTimeZone = 1; //compared to gmt
$databaseDateTimestamp = 1333742400; // gmt stamp from database
$databaseDateTimestampToUser = $databaseDateTimestamp+($userTimeZone*60*60); // to user timezonestamp 

$serverToGMTStamp = serverToGMTStamp();
$serverToUserGMTtoUser = $serverToGMTStamp+($userTimeZone*60*60); // to user timezonestamp 
echo 'databaseDateTimestamp (gmt): '.$databaseDateTimestamp.'<br />';
echo 'databaseDateTimestamp date (gmt): '.date("m/d/Y, H:i",$databaseDateTimestamp).'<br /><br />';

echo 'databaseDateTimestamp (user): '.$databaseDateTimestampToUser.'<br />';
echo 'databaseDateTimestamp date (user): '.date("m/d/Y, H:i",$databaseDateTimestampToUser).'<br /><br />';

echo 'serverTimeStamp (gmt): '.$serverToGMTStamp.'<br />';
echo 'serverTimeStamp date (gmt): '.date("m/d/Y, H:i",$serverToGMTStamp).'<br /><br />';

//echo 'serverTimeStamp (user): '.$serverToUserGMTtoUser.'<br />';
//echo 'serverTimeStamp date (user): '.date("m/d/Y, H:i",$serverToUserGMTtoUser).'<br /><br />';

if($serverToUserGMTtoUser>$databaseDateTimestampToUser)
{
echo 'input time already past by '.(($serverToUserGMTtoUser-$databaseDateTimestampToUser)/(60*60));
}
else{
echo 'input time not past';
}
exit();
  zaterdag 7 april 2012 @ 18:43:00 #204
370539 kucher
is snucher
pi_110031308
1
2
3
4
5
<?php
function serverToGMTStamp() { // replaces time
    
return time();
}
?>
Daarom betalen ze mij 120 Euro per uur, clientèle krijgen waar voor hun geld :7
pi_110031614
zoals je daarachter ziet ben ik veel aan het kutten geweest.

Maar mijn 'concept' klopt toch?
pi_110038929
quote:
0s.gif Op zaterdag 7 april 2012 18:24 schreef Darkomen het volgende:
Heren,

Ik hoop dat jullie me weer eens kunnen helpen.
Ik ben iets aan het bouwen dat de usertabellen van vbullentin 4 gebruikt.
Hierin staat de usertimezone welke het verschil van hun tijd zone met GMT. bijvoorbeeld voor mijzelf +1

Voordat je denkt dat je iets fout doet terwijl het niet zo is; momenteel is het voor ons GMT +2 omdat het zomertijd is.
  FOK!-Schrikkelbaas woensdag 11 april 2012 @ 14:26:10 #208
1972 Swetsenegger
Egocentrische Narcist
pi_110181251
Zie ik iets over het hoofd :?

Ik heb een tekstfile waarin ik userid's opsla.

Die file lees ik in een array, en vervolgens controleer ik over de userID uit mijn sessie in die tekstfile staat. Zo niet, schrijf ik een variabele EN schrijf vervolgens de sessie ID naar de textfile.

1
2
3
4
5
6
7
8
9
10
11
12
<?php
    $wallPosts 
= array();
    
$wallPosts=file('wallPost.txt'FILE_IGNORE_NEW_LINES);
        
    if(!
in_array($_SESSION['uid'], $wallPost)) {
        
$onload "onload=\"postToWall();\"";
        
$fp fopen('wallPost.txt''a');
        
fwrite($fp$_SESSION['uid']."\r\n");
        
fclose($fp);
        echo 
$onload;
    }
?>

Maar nou het lullige. Ik weet 100% zeker dat mijn sessie ID niet in de tekstfile staat (sterker nog, de file is leeg), maar $onload wordt niet geschreven de eerste keer dat ik de file laadt de fwrite wordt wel uitgevoerd.

als ik vervolgens de tekstfile leeg maak en opnieuw laadt werkt het wel zoals verwacht. Delete ik echter alle history & sessies en probeer het weer van voor af aan gaat het weer mis.

Het lijkt wel of de file schrijven wordt uitgevoerd waardoor de voorwaarde van de if false is.

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    $wallPosts 
= array();
    
$wallPosts=file('wallPost.txt'FILE_IGNORE_NEW_LINES);
    
print_r($wallPosts); // dit geeft een array terug met de sessieID die HIERONDER geschreven wordt
    
    
if(!in_array($_SESSION['uid'], $wallPost)) {
        
$onload "onload=\"postToWall();\""// wordt niet uitgevoerd
        
$fp fopen('wallPost.txt''a'); //wordt wel uitgevoerd
        
fwrite($fp$_SESSION['uid']."\r\n"); //wordt wel uitgevoerd
        
fclose($fp); // wordt wel uitgevoerd
        
echo $onload;
    }
?>
  woensdag 11 april 2012 @ 14:50:14 #209
75592 GlowMouse
l'état, c'est moi
pi_110182283
$_SESSION['uid'] zal wel leeg zijn, maar dat is standaard debugwerk. Regel 2 is overbodig.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  FOK!-Schrikkelbaas woensdag 11 april 2012 @ 14:59:53 #210
1972 Swetsenegger
Egocentrische Narcist
pi_110182767
quote:
0s.gif Op woensdag 11 april 2012 14:50 schreef GlowMouse het volgende:
$_SESSION['uid'] zal wel leeg zijn, maar dat is standaard debugwerk. Regel 2 is overbodig.
Nee hij is niet leeg, anders kan hij die ook niet schrijven naar de txt file op regel 8...
Ik weet dat regel 2 overbodig is, die heb ik maar toegevoegd om te zien of dat het probleem oplost
  woensdag 11 april 2012 @ 15:01:43 #211
75592 GlowMouse
l'état, c'est moi
pi_110182838
var_dump($_SESSION['uid'], $wallPost)
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  woensdag 11 april 2012 @ 15:04:41 #212
75592 GlowMouse
l'état, c'est moi
pi_110182943
of je browser cache
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  FOK!-Schrikkelbaas woensdag 11 april 2012 @ 15:14:17 #213
1972 Swetsenegger
Egocentrische Narcist
pi_110183367
quote:
14s.gif Op woensdag 11 april 2012 15:01 schreef GlowMouse het volgende:
var_dump($_SESSION['uid'], $wallPost)
string(15) "100003526677056" NULL

-edit-

Of je zet de goede variabele in je dumb

string(15) "100003526677056" array(0) { }
  FOK!-Schrikkelbaas woensdag 11 april 2012 @ 15:15:02 #214
1972 Swetsenegger
Egocentrische Narcist
pi_110183399
quote:
14s.gif Op woensdag 11 april 2012 15:04 schreef GlowMouse het volgende:
of je browser cache
Ik delete alle history en browser gegevens tussen elke test
  woensdag 11 april 2012 @ 15:26:11 #215
75592 GlowMouse
l'état, c'est moi
pi_110183936
wijzig echo $onload; in die($onload), dan kun je hem niet missen
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  FOK!-Schrikkelbaas woensdag 11 april 2012 @ 15:27:45 #216
1972 Swetsenegger
Egocentrische Narcist
pi_110184002
ik loop nu tegen een facebook restrictie aan, kan niet meer verder testen :')
  FOK!-Schrikkelbaas woensdag 11 april 2012 @ 15:45:28 #217
1972 Swetsenegger
Egocentrische Narcist
pi_110184888
quote:
14s.gif Op woensdag 11 april 2012 15:26 schreef GlowMouse het volgende:
wijzig echo $onload; in die($onload), dan kun je hem niet missen
Script loopt gewoon door. UID wordt in de txt file geschreven maar geen 'die'

1
2
3
4
5
6
7
8
9
10
11
<?php
    $wallPosts
=file('wallPost.txt'FILE_IGNORE_NEW_LINES);
        
    if(!
in_array($_SESSION['uid'], $wallPosts)) {
        
$onload "onload=\"postToWall();\"";
        
$fp fopen('wallPost.txt''a');
        
fwrite($fp$_SESSION['uid']."\r\n");
        
fclose($fp);
        die(
$onload);
    }
?>

Ik begrijp er geen flikker van :{
  woensdag 11 april 2012 @ 18:08:28 #218
137776 boem-dikkie
Jedi Mind Baby!
pi_110191599
Iemand een oplossing voor mijn kwestie, of een schop in de goede richting?

Ik heb meerdere rows met informatie in een tabel.

Eén van de kolommen in een rij heet tags.

In die kolommen zitten de tags als volgt: leuk, hoi, hai.

Nu wil ik de tags van alle rijen laten zien zonder dat ik duplicates heb.

Ik heb bijv. twee rijen:
ID | Tags
1 | Een, twee, drie
2 | Vier, vijf, twee, een.

Nou wil ik als output: Een, twee, drie, vier, vijf.

Ik krijg als ik gewoon de boel select en naar buiten gooi nu: Een, twee, drie, vier, vijf, twee, een.
Ik weet niks van Hindoes. Wel van Samoerai en andere dingen.
  woensdag 11 april 2012 @ 18:29:49 #219
25889 Sitethief
Fulltime Flapdrol
pi_110192424
GROUP BY al geprobeerd?
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
pi_110193168
Waarom sla je meerdere tags in één veld op?
  woensdag 11 april 2012 @ 18:48:37 #221
137776 boem-dikkie
Jedi Mind Baby!
pi_110193175
Jep. Helaas.
Ik weet niks van Hindoes. Wel van Samoerai en andere dingen.
  woensdag 11 april 2012 @ 19:39:02 #222
370539 kucher
is snucher
pi_110196006
Meerdere tags in 1 veld is idd de WTF, daardoor kun je niet SELECT DISTINCT gebruiken of GROUP BY. Met een genormaliseerde database kan dit wel, je hebt dan een aparte tabel met tags en een koppeltabel om de tags ergens aan toe te wijzen.

Met een stored procedure die alle tags in een tijdelijke tabel opslaat en vervolgens erop los joint kan het wel maar dat is beduidend meer werk, fout-gevoelig en lang niet zo snel in uitvoering. Iets beters dan dit schiet me niet zo gauw te binnen. Een recursieve query met een CTE zou nog een mogelijkheid kunnen zijn maar dat zou zomaar de WTF award van het jaar kunnen winnen.
  woensdag 11 april 2012 @ 19:42:06 #223
137776 boem-dikkie
Jedi Mind Baby!
pi_110196242
Hehe ja weet ik wel maar ik had geen zin om voor één of twee keer gebruik dat te doen.

Maar goed, misschien maar wel gewoon doen. :')
Ik weet niks van Hindoes. Wel van Samoerai en andere dingen.
  zaterdag 14 april 2012 @ 21:52:59 #224
113667 Keiichi
Konnichiwa!
pi_110328750
Ik heb ruzie met unique keys in innodb icm character sets.

Voorheen was alles latin1 encoding. Daar kon ik unique keys hebben die ook onderscheiden werden op puntjes op een a bv. 'ä' en 'a' waren elk uniek

Met utf8-general of utf8-unicode, niet meer :( Het is een database met gebruikersgegevens waarbij een unique key op gebruikersnaam rust, dus het is vrij vervelend als ik deze moet verwijderen ;)

Hoe kan ik unique keys toch goed laten werken op deze manier?
  zaterdag 14 april 2012 @ 23:38:01 #225
113667 Keiichi
Konnichiwa!
pi_110333694
Ik ben nog verder met character encodings aan het kloten, ik heb nu het volgende.

De huidige pagina is ISO-8859-1. Ik ben er achter gekomen dat goede browsers automatisch UTF-8 of karakters buiten ISO omzet naar htmlentities. Hierdoor leek het altijd of UTF8 nooit een probleem geweest is. Probleem is dat ik de output uit de database overal door htmlentities ga afvangen, waardoor data onbruikbaar is (alle &'s worden vervangen door & waardoor eerder gemaakt htmlentities() letterlijk getoond worden. Daar kan niemand wat mee.

Is er een mogelijkheid om htmlentities die bestaan met rust laten en alle ander karakters die geen htmlentitiy vormen wel door htmlentities()
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')