Avatar billede kgp43 Nybegynder
25. september 2009 - 16:44 Der er 11 kommentarer og
1 løsning

Vis alt fra table1 som ikke er i table2

Hej,

Jeg har to tabeller:

domains (id,name,createdate)
blogs (id,title,domain)

Jeg har bruge for at vise alle domains, men kun dem der ikke er oprettet i tabellen "blogs".

Har prøvet følgende, men det virker ikke (den viser alle domains):

// Get unused domains
$domain_query = mysql_query("SELECT id, name, createdate FROM domains as d WHERE (SELECT COUNT(id) FROM blogs WHERE d.name = domain LIMIT 1) = 0  ORDER BY ".$sort." ".$range." LIMIT 200") or die(mysql_error());
while($domain_fetch = mysql_fetch_array($domain_query)) {

}
Avatar billede arne_v Ekspert
25. september 2009 - 19:12 #1
proev:

$domain_query = mysql_query("SELECT id, name, createdate FROM domains WHERE name NOT IN(SELECT domain FROM blogs) ORDER BY ".$sort." ".$range." LIMIT 200") or die(mysql_error());
Avatar billede kgp43 Nybegynder
25. september 2009 - 19:56 #2
Det er stadig det samme, får alle udtræk fra domains.
Avatar billede arne_v Ekspert
25. september 2009 - 20:05 #3
Proev lige og check data en ekstra gang.

Er der forskel paa case eller trailing spaces eller noget andet som goer at der ikke er matches i blogs.
Avatar billede kgp43 Nybegynder
25. september 2009 - 20:05 #4
Det er mærkeligt, har kigget alt i gemmen 10 gange - kan ikke finde fejlen :(
Avatar billede kgp43 Nybegynder
25. september 2009 - 20:05 #5
Ok, checker lige igen.
Avatar billede kgp43 Nybegynder
25. september 2009 - 20:11 #6
Syntes ikke der er nogle fejl.

domains
id int(7)
name varchar(255) latin1_swedish_ci
createdate varchar(255) latin1_swedish_ci


blogs
id int(6)
title varchar(255) latin1_swedish_ci
domain varchar(255) latin1_swedish_ci
Avatar billede arne_v Ekspert
25. september 2009 - 20:15 #7
Der er jo ikke tabel strukturen men data i kolonnerne domains.name og blogs.domain der skal matche helt.
Avatar billede kgp43 Nybegynder
25. september 2009 - 20:24 #8
Ok, disser værdier stemmer over ens i begge tabeller.

Har dog opdaget at den viser alle domains, dog ikke den med det største ID. Ved ikke hvad dette betyder.
Avatar billede kgp43 Nybegynder
25. september 2009 - 22:39 #9
Har løst problemet, blev nød til at logge ind i phpmyadmin og edit alle enteries. Lavede ikke om på noget, men der var åbenbart nogle whitespaces jeg ikke kunne se.

Prøvede at lave følgende, men det virkede ikke.
Ved du hvorfor?

$domain_query = mysql_query("SELECT name FROM domains ") or die(mysql_error());
while($domain_fetch = mysql_fetch_array($domain_query)) {
   
    $domainname = $domain_fetch['name'];
    $domainid = $domain_fetch['id'];
   
    $domainname = trim($domainname);
   
    mysql_query("UPDATE domains SET name='$domainname' WHERE id='$domainid' LIMIT 1 ") or die (mysql_error());
    echo "DOMAIN $domainname UPDATED<br />";
}
Avatar billede kgp43 Nybegynder
25. september 2009 - 22:40 #10
måske et forkert characterset... ved sku ik.
total mærkeligt.
Avatar billede kgp43 Nybegynder
01. marts 2010 - 13:27 #11
smid et svar arne_v, så vi kan få dette spørgsmål lukket :)
Avatar billede arne_v Ekspert
01. marts 2010 - 13:53 #12
ok
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

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