Query inspringen?
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...
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
Bij LIMIT is het overzichtelijker om dit ook op 1 regel te gebruiken, ook vanwege de lengte indd.
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
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
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 ;-)
PS. Okay :)