Query inspringen?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Douwe

Douwe

23/06/2008 14:00:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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)
PHP script in nieuw venster Selecteer het PHP script
1
INSERT INTO aanvragen (klantid, productid, datum) VALUES ('".$iKlantId."', '".$iProductId."', NOW())

En deze query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE aanvragen SET productid = '".$iProductId."', datum = NOW() WHERE id = ".$iAanvraagId." LIMIT 1

En deze query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
DELETE FROM aanvragen WHERE id = ".$iAanvraagId." LIMIT 1


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
 
PHP hulp

PHP hulp

17/05/2021 00:16:28
 
Joren de Wit

Joren de Wit

23/06/2008 14:08:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
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

Zo, is wel duidelijk denk ik...
 
Douwe

Douwe

23/06/2008 14:17:00
Quote Anchor link
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?
Gewijzigd op 01/01/1970 01:00:00 door Douwe
 
Crispijn -

Crispijn -

23/06/2008 14:21:00
Quote Anchor link
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.
 
Douwe

Douwe

23/06/2008 14:23:00
Quote Anchor link
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.
Gewijzigd op 01/01/1970 01:00:00 door Douwe
 
Joren de Wit

Joren de Wit

23/06/2008 14:37:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
INSERT INTO
  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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
LIMIT 20
OFFSET 10

En:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
LIMIT
  20
OFFSET
  10

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
 
Douwe

Douwe

23/06/2008 14:49:00
Quote Anchor link
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 ;)
 
Joren de Wit

Joren de Wit

23/06/2008 14:51:00
Quote Anchor link
Quote:
ik kende OFFSET niet eens
OFFSET is standaard SQL, de schrijfwijze die jij gebruikte zal alleen binnen MySQL werken...

ps. Slotjes doen we niet aan, wellicht dat iemand anders nog een vraag wil stellen of een opmerking wil plaatsen in dit topic ;-)
 
Douwe

Douwe

23/06/2008 14:55:00
Quote Anchor link
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 :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.