27. april 2001 - 22:16Der er
34 kommentarer og 1 løsning
Vis forskel på 2 tabeller
Jeg har 2 stk. mysql tabeller der er helt ens med hensyn til opbygning, forskellen er de data der findes i dem ? Hvordan finder jeg de poster i tabel 1 der ikke findes i tabel 2 ?
SELECT * FROM table1 WHERE etellerandet IN (SELECT etellerandet FROM table2 WHERE nogetandet = nogethelttredje) EXCEPT SELECT * FROM tabel1 WHERE etellerandet IN (SELECT etellerandet FROM table2 WHERE nogetandet = nogetheltfjerde);
Kunnde du give mig lidt mere kode ? jeg er ikke helt med hvis nu tabel 1 heder \"add_menu\" og tabel 2 heder \"menu\" og jeg ville se dem fra \"add_menu\" der ikke findes i \"menu\" hvad slulle jeg så skrive:
jeg har fundet dette i hjælpen til mysql, der det noget der kan bruges ? SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id where table2.id IS NULL
=>EJ: du har så vidt som jeg kan se ret. Den findes ikke. Jeg har hurigt lige kigge lidt i doc\'en uden resultat ... Er du sikker på den ikke bare er blevet \"omdøbt\" til et eller andet, andet?
Ah, ja, en left join kan mange ting. Man skal lave så meget på SQL-serveren, som muligt, i stedet for i f.eks. PHP. Hmm, jeg skal vist lave mig selv et eksempel for at se om den virker :)
ja men det virkede ind til at jeg satte en betingelse mere på, så virker det ikke, for nu kommer der ingen ting ! denne virker: SQL = \"SELECT add_submenu.* FROM add_submenu LEFT JOIN submenu ON add_submenu.url=submenu.url where submenu.url IS NULL\"
mens denne ikke virker: SQL = \"SELECT add_submenu.* FROM add_submenu LEFT JOIN submenu ON add_submenu.url=submenu.url where submenu.url IS NULL and submenu.userID =\"& session(\"userID\") nogen der ved hvorfor ?? oj jeg har undersøgt at der findes rec. med denne userid
jeg fant selv en løsning som ser ud til at virke: SQL = \"SELECT add_submenu.* FROM add_submenu LEFT JOIN submenu ON add_submenu.url=submenu.url where submenu.url IS NULL and add_submenu.kategoriid =\" & id
\'Response.Write sql Conn.Execute (SQL)
Set rs2 = conn.Execute(SQL) DO WHILE NOT rs2.EOF id= rs2(\"id\") navn= rs2(\"Navn\") url=rs2(\"url\") KategoriID=rs2(\"KategoriID\")
set rs3 = conn.execute(\"SELECT * FROM submenu WHERE url <> \'\" & url & \"\' and userID= \"&session(\"userID\")) if rs3.EOF AND rs3.BOF then else end if
erikjacobsen : ja det har du nåk ret i, men jeg kender ikke så meget til SQL ! men jeg har tænkt over det, og det jeg har lavet, er det ikke at jeg i den første sql sætning løber igennem ALLE rec. i tabel submenu ? hvad skal du have af point for at lave en lidt mere elegant løsning?
Det jeg ønsker er at, se alle de poster i tabelen add_submenu der ikke findes i tabelen submenu og hvor userID i tabel submenu er <> fra session(\"userID\"))
// udskriver dem, der findes i t2, som ikke findes i t1 // det antages, der ikke er dubletter i url felterne i t1, hhv. t2
while ($i1<=$no1 && $i2<=$no2) { if ($row1[0]==$row2[0]) { // findes i begge, udskrives ikke $i1++; $row1=mysql_fetch_row($rs1); $i2++; $row2=mysql_fetch_row($rs2); } elseif ($row1[0]<$row2[0]) { // findes i t1, men ikke i t2, udskrives ikke $i1++; $row1=mysql_fetch_row($rs1); } else { //$row1[0]>$row2[0], findes i t2, men ikke i t1, udskrives echo \"$row2[0]<br>\\n\"; $i2++; $row2=mysql_fetch_row($rs2); } }
// resten i t2, hvis der er nogen, udskrives også while ($i2<=$no2) { echo \"$row2[0]<br>\\n\"; $i2++; $row2=mysql_fetch_row($rs2); }
Åh nej, ASP. Livet er for kort til ASP.... Troede lige, da det var MySql, at det var til PHP. Ok. Utestet over alle måder, fyldt med ASP-syntaksfejl:
Lav recordset rs1 med \"select url from t1 order by url\" Lav recordset rs2 med \"select url from t2 order by url\"
while (not rs1.eof) and (not rs2.eof) if rs1(\"url\")=rs2(\"url) then rs1.movenext rs2.movenext else if rs1(\"url\")<rs2(\"url\") then rs1.movenext else respose.write rs2(\"url\") & \"<br>\" rs2.movenext end if end if wend
while not rs2.eof respose.write rs2(\"url\") & \"<br>\" rs2.movenext wend
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.