Tråden för användbara SQL-satser

PHPportalen Forum Index » Databaser
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
md2perpe
Ex-Moderator



Medlem i: 5202 dagar
Från: Hallonbergen, Kungsbodarna
Status: Offline



#287386
Inlägg Skrivet: 2005-05-01 19:27      Ämne: Tråden för användbara SQL-satser Citera

Startar härmed efter önskemål en klistrad tråd för särskilt användbara SQL-satser (gärna ofta efterfrågade).

Om inget annat anges gäller satserna för MySQL 4.0 eller tidigare. Om en sats är skriven specifikt för en annan databas eller en senare version av MySQL, bör detta alltså anges.

Vänligen håll tråden ren från kommentarer. Skicka sådana i första hand direkt till den som lagt in en SQL-sats så att denne kan rätta/komplettera sin kod. Kommentarer som inte anses ge någon viktig information kommer att plockas bort.

Senast ändrad av md2perpe den 2005-05-01 21:12, ändrad totalt 1 gång
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
lilleman
Ex-Moderator



Medlem i: 4974 dagar
Från: Örebro
Status: Offline



#287390
Inlägg Skrivet: 2005-05-01 19:46      Ämne: Citera

Hämta alla rader från first_table som inte har några matchande rader i second_table:

KOD:
1:
select a.* from first_table as a
2:
  left outer join second_table as b
3:
    on b.table2_field = a.table1_field
4:
where b.table2_field is null
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
lord mazdak



Medlem i: 4636 dagar
Från: Göteborg
Status: Offline



#287391
Inlägg Skrivet: 2005-05-01 19:51      Ämne: Citera

för Firebird/InterBase:
    hämta alla system tables,user tables,views i en databas
    KOD:
    1:
    SELECT RDB$RELATION_NAME FROM RDB$RELATIONS

    hämta alla user tables,views i en databas
    KOD:
    1:
    SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG = 0

    hämta alla user tables i en databas
    KOD:
    1:
    SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG = 0 AND RDB$VIEV_BLR IS NULL

för MaxDB
    ta reda på alla tabeller i en databas där användaren har SELECT privilegium
    KOD:
    1:
    SELECT tablename FROM DOMAIN.TABLES WHERE privileges LIKE '*SEL*'

    ta reda på alla kolumner som finns i en viss tabell
    KOD:
    1:
    SELECT * FROM DOMAIN.COLUMNS WHERE tablename = 'din tabell'

för T-SQL (MSSQL, Sybase SQL server)
    ta reda på alla user tables i en databas
    KOD:
    1:
    EXEC sp_tables @table_qualifier = 'din databas', @table_type = "'TABLE'"

    ta reda på alla på alla columner i en tabell
    KOD:
    1:
    EXEC sp_columns @table_name = 'din tabell'
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
fjutte



Medlem i: 4415 dagar
Från: Gotland/Göteborg
Status: Offline



#288132
Inlägg Skrivet: 2005-05-05 02:18      Ämne: MySQL Citera

bara nåt jag hade i en textfil.. lägg gärna till om ni vill..

// selectar en random post
SELECT id FROM table ORDER BY RAND() LIMIT 1;

// ändra namn på tabell
rename table <tabellnamn> TO <tabellnamn>

// visa enum-värde
select * from table <tabell> where <enum_col>=1;

// visa databaser
show databases;

// visar alla tabeller
show tables;

// visar alla fält i tabellen
show columns from <tabell>;

// visar hur en tabell skapats med CREATE
show create table <tabellnamn>;

// mata in data i tabell (fyll på med flera kolumner; ska alla kolumner fyllas i behövs inte kolumnernas namn anges)
insert into users (fornamn,efternamn) values ('Anders','Bengtsson');

// ta bort kolumn
alter table <tabell> drop <kolumn>;

// ta bort alla poster med efternamnet "Bengtsson"
delete from <tabell> where efternamn='BENGTSSON';

// ta bort SISTA posten i en tabell
DELETE FROM <tabell> ORDER BY timestamp DESC LIMIT 1;

// ta bort alla poster i tabellen
DELETE <tabell>;
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Retyle



Medlem i: 4843 dagar

Status: Offline



#344022
Inlägg Skrivet: 2006-01-12 00:16      Ämne: Citera

En fråga bara, ni kan ta bort detta inlägget när nån läst det!

Hur gör man för att ändra en tabell? Lägga till en kolumn, ta bort osv!

//Robin
 

_________________
"There is no place like 127.0.0.1"
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
froppe



Medlem i: 4050 dagar

Status: Offline



#422559
Inlägg Skrivet: 2006-10-12 21:55      Ämne: Citera

Är de inte update man använder för att ändra i en tabell eller fält och Delete för att ta bort något ur en tabell.
 

_________________
Hjälp mig..
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Meshuggah



Medlem i: 3868 dagar
Från: Vårgårda
Status: Offline



#444647
Inlägg Skrivet: 2006-12-17 16:36      Ämne: Citera

Retyle skrev:
En fråga bara, ni kan ta bort detta inlägget när nån läst det!

Hur gör man för att ändra en tabell? Lägga till en kolumn, ta bort osv!

//Robin


Alter lägger till nya eller tar bort kolumner ur en existerande tabell.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
bitcomplex



Medlem i: 3695 dagar
Från: Skåne
Status: Offline



#539492
Inlägg Skrivet: 2007-12-12 07:44      Ämne: Citera

KOD:
1:
 
2:
SELECT IF (t2.fieldValue IS NULL, t1.fieldValue, t2.fieldValue) AS fieldValue
3:
FROM table1 t1
4:
LEFT JOIN table2 t2 ON t1.id = t2.id
5:
 


Hämta fieldValue från table1 om inte fieldValue för samma id återfinns i table2. Hämta isf fieldValue från table2 istället.

Använder detta i ett fråga/svar-verktyg där man ibland ändrar på standardformuleringen av frågor och svarsalternativ. Så standardfrågor och svar hämtas om det inte finns en förändrad form, då hämtar vi den förändrade frågan/svarsalternativet istället...
 

_________________
Twitter
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
WizKid
Ex-Moderator



Medlem i: 5533 dagar
Från: Stockholm
Status: Offline



#539572
Inlägg Skrivet: 2007-12-12 17:03      Ämne: Citera

bitcomplex: Samma sak med fast lite mindre kod:
KOD:
1:
SELECT IFNULL(t2.fieldValue, t1.fieldValue) AS fieldValue ...
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida ICQ-nummer
smartsite



Medlem i: 3564 dagar
Från: Linköping
Status: Offline



#540683
Inlägg Skrivet: 2007-12-17 12:23      Ämne: Citera

lilleman skrev:

KOD:
1:
select a.* from first_table as a
2:
  left outer join second_table as b
3:
    on b.table2_field = a.table1_field
4:
where b.table2_field is null


Precis vad jag letade efter just nu.
Vilken timesaver phpportalen är imellanåt!

Stort tack Lilleman!

Jag bidrar lite till denna tråd med....

Ta reda på vilket id nästa insert kommer att bli i en tabell med AUTO_INCREMENT:

KOD:
1:
 
2:
$query = mysql_query("show table status like TABELL_NAMN");
3:
$query_result = mysql_fetch_array($query);
4:
$next_insert_id = $query_result['Auto_increment'];
5:
 


// Henke
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
hallis



Medlem i: 5154 dagar
Från: Stockholm
Status: Offline



#645336
Inlägg Skrivet: 2009-07-03 09:51      Ämne: Citera

Ganska användbar funktion som returnerar det första NOT NULL-värdet, om ingen match hittas returneras NULL.

Ett användbart scenario är när man använder LEFT JOIN.

KOD:
1:
SELECT
2:
   COALESCE(t2.newInfo, t1.info) AS info
3:
FROM
4:
   tabell1 t1
5:
LEFT JOIN
6:
   tabell2 t2
7:
ON
8:
   t1.id = t2.id
 

_________________
Utvecklingsbloggen
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » Databaser
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic