MySQL - select As gebruiken in de query

Pagina: 1
Acties:

  • rmfloris
  • Registratie: Maart 2002
  • Laatst online: 22-11-2024

rmfloris

Kowalski: Kaboeeem??

Topicstarter
In mijn database staat een kolom 'nummers', de query die ik hierop loslaten haalt het begin getal uit de DB, maar dit begingetal moet weer worden gebruikt in de query.
Iets meer uitleg:

De DB:
IDNummers
112456
225555
365435


Ik wil dus een query draaien die bijvoorbeeld alle nummers beginnend met 1 & 2 of 2 & 6 of 1 & 6 (iedere willekeurige/benodigde combinatie) selecteren. Ik dacht dat ik er zo was:

PHP:
1
2
3
4
SELECT id, nummers, SUBSTRING(nummers,1,1) AS first 
FROM nummers_table
WHERE first >= '1' 
AND first <= '3'


Maar dit werkt dus helaas niet. De melding die ik krijg is dat de kolom 'first' niet bestaat.

Omdat het voor een range getallen moet werken is het geen oplossing om met like '1%' etc te werken. Hopelijk kan iemand mij verder helpen hiermee. Mocht het niet helemaal duidelijk zijn, dan hoor ik het graag.


Update: first_number aangepast naar first en melding toegevoegd.

[ Voor 11% gewijzigd door rmfloris op 15-04-2006 18:05 ]

Foto afdrukken prijsvergelijk -> http://www.fotovergelijk.nl


  • Cyphax
  • Registratie: November 2000
  • Laatst online: 13:22

Cyphax

Moderator LNX
Eerst geef je die substring de alias "first_number" en vervolgens zet je in je where-clause een vergelijking met "first".
Probeer ook even dat veld te casten naar een varchar.
http://dev.mysql.com/doc/refman/4.1/en/cast-functions.html

[ Voor 37% gewijzigd door Cyphax op 15-04-2006 18:01 ]

Saved by the buoyancy of citrus


  • rmfloris
  • Registratie: Maart 2002
  • Laatst online: 22-11-2024

rmfloris

Kowalski: Kaboeeem??

Topicstarter
Cyphax schreef op zaterdag 15 april 2006 @ 18:00:
Eerst geef je die substring de alias "first_number" en vervolgens zet je in je where-clause een vergelijking met "first".
Probeer ook even dat veld te casten naar een varchar.
http://dev.mysql.com/doc/refman/4.1/en/cast-functions.html
Die cast functie heb ik doorgelezen, maar zie ik niet echt als oplossing. Hoe zie jij dit Cyphax?

Foto afdrukken prijsvergelijk -> http://www.fotovergelijk.nl


  • Mike Jarod
  • Registratie: Januari 2002
  • Niet online
Ik snap je niet. Probeer het eens anders uit te leggen.

Klopt dat tie zegt dat ie een kolom niet kan vinden, first bestaat namelijk niet, pas in je query en dan kan je 'm niet gebruiken.

Je kan ipv first wel substr(nummers,1,1) gebruiken in je where clause.

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 13:22

Cyphax

Moderator LNX
rmfloris schreef op zaterdag 15 april 2006 @ 18:06:
[...]


Die cast functie heb ik doorgelezen, maar zie ik niet echt als oplossing. Hoe zie jij dit Cyphax?
Als je dat nummer cast naar een varchar, dan zou je daar een substring van moeten kunnen pakken. Bijvoorbeeld het eerste karakter, want dat wilde je hebben. Dan geef je 'm die alias, zoals je nu doet, en dan doe je daar de vergelijking mee. Maar nu heb je in het voorbeeldje dat je in je post hebt gezet een vergelijking met een veld/alias dat niet bestaat, dus die 2 dingen moet je dan even oplossen.
Janoz schreef op zaterdag 15 april 2006 @ 18:08:
De waarde achter 'as' is niet in je where beschikbaar. Als je ipv first en je where ook SUBSTRING(nummers,1,1) gebruikt werkt het wel.
Dat is ook waar (ik blijf dat maar raar vinden, dat doet elk DBMS dat ik heb gebruikt zo). Heb ik ooit heel erg over gevloekt tegen Oracle :+
Overigens KAN het wel maar dan moet je wel smerig te werk gaan...
code:
1
select bla from (select accountid as bla from tblaccount) mybeautifulalias where bla=1

's niet zo interessant verder :+

[ Voor 40% gewijzigd door Cyphax op 15-04-2006 18:13 ]

Saved by the buoyancy of citrus


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22-02 00:22

Janoz

Moderator Devschuur®

!litemod

De waarde achter 'as' is niet in je where beschikbaar. Als je ipv first en je where ook SUBSTRING(nummers,1,1) gebruikt werkt het wel.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • rmfloris
  • Registratie: Maart 2002
  • Laatst online: 22-11-2024

rmfloris

Kowalski: Kaboeeem??

Topicstarter
Het is opgelost, ik heb het gedeelte SUBSTRING(nummers,1,1) in de where clause gebruikt. Dom dat ik daar zelf niet op kwam. Ontzettend bedankt.

Foto afdrukken prijsvergelijk -> http://www.fotovergelijk.nl

Pagina: 1