Query inspringen?
Ik vroeg me af hoe jullie je SQL-query's inspringen, ikzelf weet namelijk niet zeker welke manier ik wil gaan gebruiken, mogelijk brengen jullie mij op een idee.
Dus: Hoe zouden jullie deze query inspringen:
En deze query:
En deze query:
En deze query:
Graag responses!
Ook als je dezelfde 'syntax' gebruikt als een voorgaande poster, graag reageren, dan weet ik welke het meest / vaak gebruikt wordt ;)
PS. Liever geen responses over SQL Injection en slimmere manieren om data op te halen, deze queries gebruik ik niet echt, ze zijn alleen voor jullie om in te springen ;)
Dus: Hoe zouden jullie deze query inspringen:
Code (php)
1
SELECT a.*, DATE(a.datum) AS datum, p.naam, p.prijs FROM aanvragen AS a, producten AS p WHERE a.klantid = ".$iKlantId." AND p.id = a.productid ORDER BY id DESC
En deze query:
Code (php)
1
INSERT INTO aanvragen (klantid, productid, datum) VALUES ('".$iKlantId."', '".$iProductId."', NOW())
En deze query:
Code (php)
1
UPDATE aanvragen SET productid = '".$iProductId."', datum = NOW() WHERE id = ".$iAanvraagId." LIMIT 1
En deze query:
Graag responses!
Ook als je dezelfde 'syntax' gebruikt als een voorgaande poster, graag reageren, dan weet ik welke het meest / vaak gebruikt wordt ;)
PS. Liever geen responses over SQL Injection en slimmere manieren om data op te halen, deze queries gebruik ik niet echt, ze zijn alleen voor jullie om in te springen ;)
Gewijzigd op 01/01/1970 01:00:00 door Douwe
Code (php)
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
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
SELECT
a.*,
DATE(a.datum) AS datum,
p.naam,
p.prijs
FROM
aanvragen AS a,
producten AS p
WHERE
a.klantid = ".$aKlant['id']."
AND
p.id = a.productid
ORDER BY
id DESC
==
INSERT INTO aanvragen
(
klantid,
productid,
datum
)
VALUES
(
'".$iKlantId."',
'".$iProductId."',
NOW()
)
==
UPDATE
aanvragen
SET
productid = '".$iProductId."',
datum = NOW()
WHERE
id = ".$iAanvraagId."
LIMIT 1
==
DELETE FROM
aanvragen
WHERE
id = ".$iAanvraagId."
LIMIT 1
a.*,
DATE(a.datum) AS datum,
p.naam,
p.prijs
FROM
aanvragen AS a,
producten AS p
WHERE
a.klantid = ".$aKlant['id']."
AND
p.id = a.productid
ORDER BY
id DESC
==
INSERT INTO aanvragen
(
klantid,
productid,
datum
)
VALUES
(
'".$iKlantId."',
'".$iProductId."',
NOW()
)
==
UPDATE
aanvragen
SET
productid = '".$iProductId."',
datum = NOW()
WHERE
id = ".$iAanvraagId."
LIMIT 1
==
DELETE FROM
aanvragen
WHERE
id = ".$iAanvraagId."
LIMIT 1
Zo, is wel duidelijk denk ik...
Dankje Joren:) Ik had nog twee vraagjes:
Je doet overal eerst de 'opdracht' ('ORDER BY' bijvoorbeeld) dan een enter en een tab, en dan de 'waarde' ('id DESC' bijvoorbeeld), behalve bij LIMIT, heeft dit nog een reden, buiten het feit dat de 'waarde' van LIMIT bijna altijd heel klein is?
En je doet SELECT [enter, tab] wat-te-selecteren en ook zo bij UPDATE en DELETE, maar niet bij INSERT, why?
Je doet overal eerst de 'opdracht' ('ORDER BY' bijvoorbeeld) dan een enter en een tab, en dan de 'waarde' ('id DESC' bijvoorbeeld), behalve bij LIMIT, heeft dit nog een reden, buiten het feit dat de 'waarde' van LIMIT bijna altijd heel klein is?
En je doet SELECT [enter, tab] wat-te-selecteren en ook zo bij UPDATE en DELETE, maar niet bij INSERT, why?
Gewijzigd op 01/01/1970 01:00:00 door Douwe
het ASC of DESC sortegen zet je ook altijd direct achter de kolom waarop je wil sorteren.
Bij LIMIT is het overzichtelijker om dit ook op 1 regel te gebruiken, ook vanwege de lengte indd.
Bij LIMIT is het overzichtelijker om dit ook op 1 regel te gebruiken, ook vanwege de lengte indd.
ASC en DESC zijn imo meer 'toevoegingen' aan de waarde, net als het AS-gedeelte bij
aanvragen AS a
LIMIT is imo een echte 'opdracht', met een waarde die niet eens altijd zo kort is, je kunt natuurlijk 'LIMIT 10' doen, maar ook 'LIMIT 10, 20'
Ik vind Blanches 'syntax' overigens zeer overzichtelijk/handig/whatever, dus ik denk dat ik die ook ga gebruiken, met de uitzondering dat ik wel een entertje bij LIMIT ga neerzetten. En ik weet ook nog niet wat ik ga doen aangaande mijn tweede vraagje aan Joren.
aanvragen AS a
LIMIT is imo een echte 'opdracht', met een waarde die niet eens altijd zo kort is, je kunt natuurlijk 'LIMIT 10' doen, maar ook 'LIMIT 10, 20'
Ik vind Blanches 'syntax' overigens zeer overzichtelijk/handig/whatever, dus ik denk dat ik die ook ga gebruiken, met de uitzondering dat ik wel een entertje bij LIMIT ga neerzetten. En ik weet ook nog niet wat ik ga doen aangaande mijn tweede vraagje aan Joren.
Gewijzigd op 01/01/1970 01:00:00 door Douwe
Welke opbouw je het fijnste vindt is natuurlijk puur je eigen smaak, dit is dus eigenlijk puur zo gegroeid.
Voor die INSERT query zou je bijvoorbeeld ook zoiets kunnen verzinnen:
Maar persoonlijk vind ik het overzichtelijker als de bij elkaar horende haakjes ook onder elkaar staan...
Bij de LIMIT zet ik de waarde er wel direct achter, puur en alleen om de lengte van die waarde, die altijd kort is. Verder gebruik ik nooit de syntax '10, 20' maar geef ik altijd netjes een offset aan. Vergelijk:
En:
Dan vind ik de eerste opbouw duidelijker, vooral als je dit in een lange query opneemt. Een nieuwe regel voor 10 en 20 is dan een beetje teveel van het goede.
ps. Het komt er dus uiteindelijk op neer dat je een syntax kiest die jezelf pretting vindt werken en dat je je vervolgens consequent aan die syntax houdt. Uiteraard kies je wel een syntax die ook redelijk leesbaar is voor andere programmeurs ;-)
Voor die INSERT query zou je bijvoorbeeld ook zoiets kunnen verzinnen:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
INSERT INTO
aanvragen (
kolom1,
kolom2,
kolom3
) VALUES (
waarde1,
waarde2,
waarde3
)
aanvragen (
kolom1,
kolom2,
kolom3
) VALUES (
waarde1,
waarde2,
waarde3
)
Maar persoonlijk vind ik het overzichtelijker als de bij elkaar horende haakjes ook onder elkaar staan...
Bij de LIMIT zet ik de waarde er wel direct achter, puur en alleen om de lengte van die waarde, die altijd kort is. Verder gebruik ik nooit de syntax '10, 20' maar geef ik altijd netjes een offset aan. Vergelijk:
En:
Dan vind ik de eerste opbouw duidelijker, vooral als je dit in een lange query opneemt. Een nieuwe regel voor 10 en 20 is dan een beetje teveel van het goede.
ps. Het komt er dus uiteindelijk op neer dat je een syntax kiest die jezelf pretting vindt werken en dat je je vervolgens consequent aan die syntax houdt. Uiteraard kies je wel een syntax die ook redelijk leesbaar is voor andere programmeurs ;-)
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Ja dat is waar, maar zoals je op het einde zegt gaat het me niet alleen om wat ik zelf fijn vind, maar ook om wat fijn is voor anderen. :)
De INSERT zoals jij hem gebruikt ga ik denk ik ook doen.
En LIMIT heb je ook gelijk in, ik kende OFFSET niet eens, dus die ga ik los van LIMIT gebruiken, en niet samen achter LIMIT.
Nou dankjewel allemaal, Joren dus, en eigenlijk mag hier een lockje op, ik weet genoeg ;)
De INSERT zoals jij hem gebruikt ga ik denk ik ook doen.
En LIMIT heb je ook gelijk in, ik kende OFFSET niet eens, dus die ga ik los van LIMIT gebruiken, en niet samen achter LIMIT.
Nou dankjewel allemaal, Joren dus, en eigenlijk mag hier een lockje op, ik weet genoeg ;)
Quote:
OFFSET is standaard SQL, de schrijfwijze die jij gebruikte zal alleen binnen MySQL werken...ik kende OFFSET niet eens
ps. Slotjes doen we niet aan, wellicht dat iemand anders nog een vraag wil stellen of een opmerking wil plaatsen in dit topic ;-)
Okay, ik heb de LIMIT x, y -syntax volgens mij een keer opgepikt in een script van een ander, dus niet eens gekeken of er zoiets als OFFSET bestond ;)
PS. Okay :)
PS. Okay :)




