henrik_ffc:> *sad selv med CREATE TEMPORARY TABLE .. SELECT ..* men nix .. står også i MySQL SQL reference som jeg sidder med ;o)
netsrac:> Yes yes ... hæ hæ .. jeg SIDDER med det lokalt .. eller dvs. i MySQL monitoren (DOS) connected til min MySQL DB (phpmyadmin siger mig ik noget ..)
Sidder med det lokalt som at data ligger på din lokale mysql server ? og mysql kan klare det fra version 3.23.xx som du jo selvfølgelig har installeret lokalt, hvad er så problemet ?
netsrac:> *G* no no .. not THAT easy .. jeg bruger mysql monitor fra MIN mysql server til at connecte til A0\'s mysql server som er v3.22.32 .. sååe .. det er v3.22\'s funktioner der kan bruges :-(
$sql=\"select * from din_tabel group by username\"; $result=mysql_query($sql); $sql_delete=\"delete from din_tabel\"; mysql_query($sql_delete); while($row=mysql_fetch_row($result)) { $sql_insert=\"insert into din_tabel (x,y,z.....) values (\'$row[0]\',\'$row[1]\',\'$row[2]\',......o.s.v.)\"; mysql_query($sql_insert); }
nuno:> Men, DISTINCT * kan stadig ikke bruges da det kun er eet felt, username, der skal DISTINCT\'es på ... men det er jo nemt omgåeligt med DISTINCT(username),pcode,realname f.eks.. eller ?
DISTINCT er hæftet en hel record - ikke en enkelt kolonne. Når man sætter flere kolonner på et sådant udtræk forøges antallet af kolonner der skal være ens - for ikke at blive udelukket fra resultatet.
SELECT DISTINCT username, pcode, realname er syntaktisk helt ok - men så kræver det at både username, pcode og realname er ens, for at eventuelle dubletter udelukkes. Med andre ord vil alle records, hvori username fx er \"ib\" komme med i dette udtræk bare een af de andre kolonner i SELECT sætningen varierer fra værdierne i de andre records med username \"ib\".
Det lyder næsten som om et script vil være nemmere ;)
nuno:> Synes lige du fortjente 30 point for din hjælp her .. det var ikke lige den løsning jeg ville have, så derfor får du kun 30 istedet for 60. Er det okay med dig eller ?
henrik_ffc> tror det ikke - bulk copy er ret begrænset i \"fleksibilitet\" - den alm. syntaks er som SELECT * INTO DinDestTabel FROM DinSrcTabel
og bliver brugt til ganske enkelt at kopiere en tabel over i en ny uden på forhånd at oprette den ny vha. CREATE TABLE - alt undtagen constraints bliver kopieret.
tdaugaard> jeg har siddet og rodet lidt med det her efter arbejde - og jeg kan sgu ikke gøre det med sql - jeg synes ikke at kunne \"vinde over\" den begrænsning, der ligger i at DISTINCT går på en hel record - og ikke på en kolonne. Jeg ved faktisk ikke om det kan løses vha. nogle vilde subqueries??
Problemet ved den anden SELECT du vil lave (den inde i loopet) det ligger vel i, at du får flere records i dit resultset med samme username - eftersom der vil være flere der matcher det username du har udtrukket vha. SELECT Distinct og nu sammenlinger med? Eller er jeg helt galt på den?
nuno:> Ja, du har ret. Der vil hele tiden være 2 poster for meget, men da alle 3 er 100% ens (2 duplicates) så er det kun nødvendigt at hente værdierne for den første post.
hmm - jeg fandt en løsning i Access idag - men jeg ved ikke om du evt. kan overføre den til MySQL?
Først - så eksporterede jeg strukturen fra den tabel jeg havde data i - dvs. den originale tabel. Dernæst gik jeg ind og ændrede - så den kolonne der ikke måtte være duplicates i - i dit tilfælde username - blev sat til primary key. Dernæst kopierede jeg alt fra den gamle tabel til den nye - med det resultat at alt på nær duplicates blev kopieret - idet der jo ikke er tilladt duplicates i den nye primary key kolonne. Access genererer så en InsertErrors tabel (eller hvad det nu var den hed) med de records der ikke kunne kopieres. Derefter ændrede jeg tilbage igen, så username kolonnen ikke længere var primary key.
MEN: Humlen af det hele er, at jeg har en tabel, som er mage til den første - der er bare ikke nogen duplicates i :) - og det hele tog ca. 1 minut.
well - jeg kender ikke så meget til MySQL i praksis og derfor heller ikke de administrative interfaces til den. Access kommer såmænd også med fejl men genererer som nævnt en tabel med insert errors.
Hvad sker der hvis du forsøger at \"violate\" en primary key? Genererer den fejl på hele SQL sætningen - eller kun de records hvor username er det samme som et der allerede eksisterer?
MIN mySQL administration foregår i DOS via SQL kald .. det HELE ;o)
Well .. jeg bruger et UNIQUE index istedet for primary key da jeg har et ID felt som pri. key *S* MySQL er langt mere avanceret end Access sååe .. men den giver fejl på hele sætningen ja ..
ja - det er lidt paradoksalt at man kan bruge et \"low-level\" værktøj til noget praktisk. *sigh*
- har faktisk kun Access installeret i øjeblikket fordi jeg skal importere nogle produktdata for et website jeg er adm. på. - så det var en af de klassiske desperate \"last way out\" forsøg på at komme løse det. Well det lykkedes jo også - men kun i Access :(
nuno:> hæ hæ .. i disse \"Win32\" dage, ja *G* Well, jeg skal nok få det løst ... jeg har fået Azero til at sende mig de fysiske database filer .. så smider jeg dem ind på min egen mySQL server .. så kan jeg lege lige så tosset jeg vil *G*
Synes godt om
Ny brugerNybegynder
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.