WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Välja ut X-antal kolumner från databas (https://www.wn.se/forum/showthread.php?t=10218)

jimmie 2005-10-08 11:16

Hej,

Stötte idag på ett litet "problem" som jag inte har haft förrut.

Jag vill välja ut ett fixt antal kolumner från en tabell. Tabellen kansek har 20 kolumner men jag vill bara hämta ut de 10 första. Hur gör jag?
Har sökt som en galning efter en lösning men jag hittar inget vettigt.

Allt detta ska göras i SQL, jag vill alltså inte behöva skriva alla 10 columnnamnen utan vill typ kunna skriva "select 10 first columns from table1". Anledningen är att jag vill att scriptet ska vara dynamiskt.

Tacksam för svar.

MVH Jimmie Pettersson

Edit:
Jag arbetar mot MySQL och InnoDB

obe 2005-10-08 11:49

Antagligen menar du 10 första raderna och då skriver du i mySQL:
SELECT * FROM nisse LIMIT 0,10
och eventuellt på slutet " ORDER BY DATE ASC".

Menar du verkligen att du ska ha kolumnerna så skriver du bara ut de kolumnerna
SELECT svenne, arne, olle, pelle FROM nisse.

Ganska basic så jag kanske missuppfattade din fråga?

Mikael Simonsson 2005-10-08 11:54

Du kan tyvärr inte göra det direkt med 1 SQL-fråga.
(http://dev.mysql.com/doc/mysql/en/select.html)

Vad du kan göra är att först hämta kolumnerna med:
SHOW COLUMNS FROM tbl_name

Och sen bygga upp en fråga dynamiskt.

jimmie 2005-10-08 12:08

Citat:

Originally posted by obe@Oct 8 2005, 12:49
Antagligen menar du 10 första raderna och då skriver du i mySQL:
SELECT * FROM nisse LIMIT 0,10
och eventuellt på slutet " ORDER BY DATE ASC".

Menar du verkligen att du ska ha kolumnerna så skriver du bara ut de kolumnerna
SELECT svenne, arne, olle, pelle FROM nisse.

Ganska basic så jag kanske missuppfattade din fråga?

Nej, jag menar de 10 första kolumnerna. Jag är fullt medveten om hur man hämtar ut X rader...

Mikael Simonsson:
Tack för svaret, då var det som jag befarade. Jag får helt enkelt göra som du säger.

Tack för svaret.

MVH Jimmie Pettersson

Starweb 2005-10-08 16:50

Citat:

Originally posted by Mikael Simonsson@Oct 8 2005, 10:54
Du kan tyvärr inte göra det direkt med 1 SQL-fråga.
(http://dev.mysql.com/doc/mysql/en/select.html)

Vad du kan göra är att först hämta kolumnerna med:
SHOW COLUMNS FROM tbl_name

Och sen bygga upp en fråga dynamiskt.

Eller ännu snabbare/kortare:
DESC tbl_name

Mikael Simonsson 2005-10-08 16:59

Citat:

Originally posted by Starweb@Oct 8 2005, 16:50
Eller ännu snabbare/kortare:
DESC tbl_name

Helt riktigt men snabbare/kortare är inte alltid bättre, i det här fallet skulle jag säga att SHOW COLUMNS är bättre då det är lättare att förstå vad koden gör.


Alla tider är GMT +2. Klockan är nu 18:00.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson