Avatar billede firestone Nybegynder
08. maj 2008 - 23:25 Der er 6 kommentarer og
1 løsning

Forskel mellem 2 databaser

Jeg vil sammenligne 2 databasers field som hedder "navn" dette felt er også unikt i begge databaser.

database: KompletDB - field 'navn'
Sammenlignes med
database: Inkomplet - field 'navn'

output skal være de entries i KompletDB, som ikke forefindes i InkompletDB hvordan vil i gribe det an?

jeg har tænkt mig at lave det i php.
Avatar billede arne_v Ekspert
09. maj 2008 - 01:32 #1
Hvis vi gætter på at du mener tabel når du skriver database så:

SELECT * FROM komplettbl WHERE navn NOT IN (SELECT navn FROM inkompletdb)
Avatar billede firestone Nybegynder
09. maj 2008 - 10:36 #2
Hvis det gør at feltet navn i kompletDB bliver sammenlignet med feltet navn i inkompletDB og output er de navne som mangler i inkompletDB så er det løsningen?
Avatar billede firestone Nybegynder
09. maj 2008 - 18:48 #3
hvis jeg kører din select streng direkte i phpmyadmin giver den mig alle entries fra kompletDB+ entries som matcher fra inkompletDB engang mere
Avatar billede firestone Nybegynder
09. maj 2008 - 18:51 #4
SELECT * from kompletDB.tabel WHERE navn NOT IN (SELECT navn FROM inkompletDB.tabel)
Avatar billede arne_v Ekspert
10. maj 2008 - 02:07 #5
meget meget mystisk
Avatar billede firestone Nybegynder
12. maj 2008 - 02:14 #6
betaler en for at lave det.. så ingen løsninger her
Avatar billede arne_v Ekspert
12. maj 2008 - 02:55 #7
Det er ellers meget nemt at verficere at SQL'en er korrekt:

mysql> CREATE DATABASE kompletdb;
Query OK, 1 row affected (0.02 sec)

mysql> USE kompletdb;
Database changed
mysql> CREATE TABLE tbl(navn VARCHAR(50) PRIMARY KEY);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO tbl VALUES ('A');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO tbl VALUES ('B');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO tbl VALUES ('C');
Query OK, 1 row affected (0.00 sec)

mysql> CREATE DATABASE inkompletdb;
Query OK, 1 row affected (0.00 sec)

mysql> USE inkompletdb;
Database changed
mysql> CREATE TABLE tbl(navn VARCHAR(50) PRIMARY KEY);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO tbl VALUES ('A');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO tbl VALUES ('B');
Query OK, 1 row affected (0.00 sec)

mysql> USE TEST;
Database changed
mysql> SELECT * FROM kompletdb.tbl;
+------+
| navn |
+------+
| A    |
| B    |
| C    |
+------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM inkompletdb.tbl;
+------+
| navn |
+------+
| A    |
| B    |
+------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM kompletdb.tbl WHERE navn NOT IN (SELECT navn FROM inkomplet
db.tbl);
+------+
| navn |
+------+
| C    |
+------+
1 row in set (0.01 sec)

mysql> DROP DATABASE kompletdb;
Query OK, 1 row affected (0.02 sec)

mysql> DROP DATABASE inkompletdb;
Query OK, 1 row affected (0.00 sec)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester