[mysql] Query probleempje

Pagina: 1
Acties:

  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
Ik wil dus de leeftijd uit een table halen en daarop zoeken.
Nu heb ik dit:
code:
1
2
3
SELECT CURRENT_DATE, (YEAR(CURRENT_DATE)-YEAR(t2.star_geboortedatum)) - (RIGHT(CURRENT_DATE,5)<RIGHT(t2.star_geboortedatum,5)) AS age, 
t1.star_usernaam, t1.star_id, t2.star_naam, t2.star_geboortedatum FROM cs_login AS t1, cs_details AS t2 WHERE t1.star_usernaam LIKE '%' && t2.star_naam LIKE 'd%' && t2.star_woonplaats 
LIKE '%' && age='18' && t1.star_id=t2.star_id

Maar nu geeft ie error aan: unknown column age in WHERE clue

Iemand idee?

www.dannyhiemstra.nl


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

yep precies wat er staat: hij kent de column age niet.
Als je een foutmelding niet begrijpt zoek eens op de melding op google of iets dergelijks.

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

misschien iets te voorbarig gesloten: sorry

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

je gebruikt age 2x?
kan dit wel wat je wil?

Doet iets met Cloud (MS/IBM)


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Volgens mij mag je niet "zomaar" op die age selecteren aangezien ie gegenereerd moet worden vanuit de "te selecteren tabellen".

Daardoor kan het heel goed zijn dat je ipv "age" daar in je WHERE dezelfde berekening moet herhalen.

Overigens ziet de query er "onduidelijk" uit, met die &&'s maar ook heb ik het idee dat je niet helemaal netjes alle functies van mysql exploit.

  • whoami
  • Registratie: December 2000
  • Nu online
code:
1
...WHERE t1.star_usernaam LIKE '%
Wat is de bedoeling hiervan?? :?

Wat ACM anders zegt, zou wel eens de oplossing van uw probleem kunnen zijn.

https://fgheysels.github.io/


  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
Op zaterdag 24 november 2001 00:32 schreef whoami het volgende:

[..]

Wat is de bedoeling hiervan?? :?

Wat ACM anders zegt, zou wel eens de oplossing van uw probleem kunnen zijn.
Dat houd dus in dat die alles selecteert waar username iets is.
Dus als iemand niets invuld bij username..
Tis voor een zoek ding en dat zei acm niet en nee het licht daar niet aan dat zie je toch aan de foutmelding :?
en wasigh ja die opmerking is te vroeg gesloten.
ik begrijp de foutmelding wel alleen snap niet wat die in deze query moet..

www.dannyhiemstra.nl


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 09-09 14:51

thomaske

» » » » » »

Op vrijdag 23 november 2001 20:29 schreef FireFoxx het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT 
    CURRENT_DATE, 
    (YEAR(CURRENT_DATE)-YEAR(t2.star_geboortedatum)) - (RIGHT(CURRENT_DATE,5)<RIGHT(t2.star_geboortedatum,5)) AS age, 
                                                    ^^^
                                                      Wat is dat??
    t1.star_usernaam, 
    t1.star_id, 
    t2.star_naam, 
    t2.star_geboortedatum 
FROM 
    cs_login AS t1, 
    cs_details AS t2 
WHERE 
    t1.star_usernaam LIKE '%' 
    && 
    t2.star_naam LIKE 'd%' 
    && 
    t2.star_woonplaats LIKE '%' 
    && 
    age='18' 
    && 
    t1.star_id=t2.star_id
En verder kan je in de WHERE-clausule niet selecteren op age, omdat je die net hebt 'aangemaakt' in je SELECT. Je moet daar dus ook de hele berekening zetten (wat ACM dus al zei) :)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • whoami
  • Registratie: December 2000
  • Nu online
Op zaterdag 24 november 2001 00:52 schreef FireFoxx het volgende:

[..]

Dat houd dus in dat die alles selecteert waar username iets is.
Dus als iemand niets invuld bij username..
Tis voor een zoek ding en dat zei acm niet en nee het licht Daar niet aan dat zie je toch aan de foutmelding :?
en wasigh ja die opmerking is te vroeg gesloten.
Ik begrijp de foutmelding wel alleen snap niet wat die in deze query moet..
Ja, dat weet ik wel maar dan zet je username toch gewoon niet in je WHERE - clause??
Wat ACM zei is dat je die hele berekening nog eens je WHERE clause moet zetten en volgens mij is het daarmee ook opgelost.

https://fgheysels.github.io/


  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 15-09 12:33
Een paar mogelijke oplossingen,
- Zeg die age berekening ook nog een keer in je where clause
- Gebruik HAVING age = 18 . Als je een debiel grote tabel hebt en dit dus te traag is kan je ook van te voren de datums uitrekenen van de mensen die 18 zijn en dat gewoon in je WHERE gooien.

BTW het is extreem niet netjes om die "LIKE '%'" te gebruiken. Verder horen ints (18) ook niet tussen quotes..
Pagina: 1