---
title: "Använda alias i WHERE"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/82880-använda-alias-i-where"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "ThACRoW"
published: "2003-07-27T20:49:30.000Z"
updated: "2003-07-28T18:18:33.000Z"
replies: 3
views: 444
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/82880-använda-alias-i-where"
---

# Använda alias i WHERE

## #1 — ThACRoW, 2003-07-27T20:49Z

Jag har en logger som samlar in alla besökares ip-adresser. Sedan har jag en databas med numeriska ip-adresser samt landskod. Mitt syfte är att kunna få reda på vilket land alla ip-adresser är ifrån.

Jag har provat att använda alias som man definierar med "AS" i WHERE, men det gick inget bra. Fick följande felmeddelande: "Unknown column 'numeric_ip' in 'where clause'"

```
SELECT INET_ATON(logger.ip) 
AS numeric_ip, logger.ip, countries.country_code
FROM logger, countries
WHERE countries.ip_from <= numeric_ip
and countries.ip_to >= numeric_ip
GROUP BY logger.ip
```

Jag provade att lägga in INET_ATON(logger.ip) efter WHILE, men det dröjde nästan 1 minut innan den var klar... då den ska kalkylera om ip-adresserna för varje fält...

Se här för mer info:
<http://ip-to-country.directi.com/node/view/54>

Permalänk: https://www.webforum.nu/p/82880

## #2 — LarsG, 2003-07-27T21:46Z

Det går inte att använda alias i where.  Hur skulle det gå till?
Värdena i select-listan finns ju inte innan frågan är utförd.

Vad har du för index på tabellen?

Permalänk: https://www.webforum.nu/p/1122235

## #3 — ThACRoW, 2003-07-28T15:37Z

Okej. Jag ger dig mina tabeller och så hoppas jag på att du klurar ut det åt mig :)

```
[b]logger[/b]
timestamp	varchar(14)
ip		varchar(15)
page		varchar(50)

+----------------+-----------------+----------------+
| timestamp      | ip              | page           |
+----------------+-----------------+----------------+
| 20030719150243 | XXX.XXX.XXX.XXX | /about.php     |
| 20030719150048 | XXX.XXX.XXX.XXX | /guestbook.php |
| 20030719150048 | XXX.XXX.XXX.XXX | /guestbook.php |
| 20030719150009 | XXX.XXX.XXX.XXX | /guestbook.php |
| 20030719145924 | XXX.XXX.XXX.XXX | /about.php     |
| 20030719145755 | XXX.XXX.XXX.XXX | /members.php   |
| 20030719145641 | YYY.YYY.YYY.YYY | /members.php   |
| 20030719145635 | YYY.YYY.YYY.YYY | /members.php   |
| 20030719145611 | YYY.YYY.YYY.YYY | /members.php   |
| 20030719145549 | YYY.YYY.YYY.YYY | /members.php   |
+----------------+-----------------+----------------+
...

[b]countries[/b]
ip_from        double
ip_to          double
country_code   char(2)

+-----------+-----------+--------------+
| ip_from   | ip_to     | country_code |
+-----------+-----------+--------------+
|         0 |  16777215 | US           |
|  50331648 |  83886079 | US           |
| 100663296 | 385875967 | US           |
| 404226048 | 404750335 | US           |
| 404815872 | 404877311 | US           |
+-----------+-----------+--------------+
...
```

Fälten *ip_from* och *ip_to* i tabellen **countries** är ip-adresser i numerisk form. För att få reda på vilket land en given ip-adress är ifrån gör man följande:

```
SELECT country_code FROM countries WHERE ip_from <= INET_ATON('127.0.0.1') AND ip_to >= INET_ATON('127.0.0.1')
```

Hur ska jag nu formulera min sql-fråga så att jag får ett resultat innehållande *ip* och *country_code* för varje rad i tabellen **logger**?

Permalänk: https://www.webforum.nu/p/1122578

## #4 — ThACRoW, 2003-07-28T18:18Z

...eller så får jag helt enkelt spara numeriska värdet på ip-adressen i tabellen logger. Blir kanske enklast och snabbast på det viset.

Permalänk: https://www.webforum.nu/p/1122682

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/82880-använda-alias-i-where
