Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

problema de `gandire` in mysql
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Subiectul anterior :: Subiectul următor  
Autor Mesaj
Ice_Man



Data înscrierii: 24/Oct/2004
Mesaje: 23

Trimis: Mie Feb 23, 2005 10:59 pm    Titlul subiectului: problema de `gandire` in mysql  

Sa da un site, X, foarte vizitat!
E nevoie de o solutie de a face urmatorul lucru in cel mai scurt timp posibil:avem o tabela cu 3 campuri C1 (id-ul), C2 si C3.
Se cere: Selectarea din baza de date a campurilor, si eliminarea celor asemenea (sa zicem ca avem: C1=1;C2=2;C3=3 ;; C1=2;C2=2;C3=3). In cazul asta, il eliminam pe C1=2;C2=2;C3=3, fara a lua in calcul campul C1.

PS: varianta cu a se mai adauga o coloana C4=C1 se exclude; la fel si construierea unor array-uri, sortandu-le in php si comparandu-le=>timp de executie prea mare...

Solutii??
Sus  
aolex



Data înscrierii: 17/Dec/2004
Mesaje: 662

Trimis: Joi Feb 24, 2005 12:09 am    Titlul subiectului:  

nu stiu daca am inteles bine ce vrei dar poate asta te ajuta :

Cod: SELECT DISTINCT column_name(s)
FROM table_name

e luata de pe w3schools :)
Sus  
w31rd0



Data înscrierii: 15/Mar/2004
Mesaje: 165
Locație: Timisoara

Trimis: Joi Feb 24, 2005 8:53 am    Titlul subiectului:  

nu stiu nici eu daca am inteels ce vrei tu, insa la un moemtn dat am avut o problema asemanatoare, trebuie sa sterg toate inregisterile dintr-o tabela care au aceleasi date in toate campurile, si o diferenta mai mica de 10 sec in campul DATETIME.
M-am chinuit la vremea aia sa fac un query mai complex (era cu GROUP BY), si mergea destul de greu. Am facut apoi select, si am parcurs in php, si am facut delete pentru fiecare inreg dubla si a mers mult mai repede, chestia este ca varianta a 2-a se putea optimiza cu index pe tabela, prima nu, asa ca uneori varianta mai simpla poate fi cea buna, chiar si acuma aplicatia merge "bine", si are cateva sute de tabele si milioane de records.
Sus  
Zamolxe



Data înscrierii: 14/Ian/2003
Mesaje: 126
Locație: Bucharest

Trimis: Sâm Feb 26, 2005 3:24 pm    Titlul subiectului: re  

am comentat codul sql. queryurile pot fi rulate ca unul singur, rezultatul este un tabel cu rezultate unice.

exista mai multe metode de scos duplicatele, totusi iti recomand sa folosesti chei unice (UNIQUE)


Cod:
##################################################################
CREATE TABLE `table` (
  `c1` int(10) unsigned NOT NULL auto_increment,
  `c2` varchar(10) NOT NULL default '',
  `c3` varchar(10) NOT NULL default '',
  KEY `c1` (`c1`)
) ENGINE=MyISAM;

#
# Dumping data for table `table`
#

INSERT INTO `table` VALUES (1, 'serban', 'google');
INSERT INTO `table` VALUES (2, 'eugen', 'verasys');
INSERT INTO `table` VALUES (3, 'dragos', 'verasys');
INSERT INTO `table` VALUES (4, 'popescu', 'microsoft');
INSERT INTO `table` VALUES (5, 'serban', 'cisco');
INSERT INTO `table` VALUES (6, 'serban', 'google');
INSERT INTO `table` VALUES (7, 'ionescu', 'dell');
INSERT INTO `table` VALUES (8, 'popescu', 'microsoft');
INSERT INTO `table` VALUES (9, 'popescu', 'microsoft');



######################################
#query care scoate duplicatele dintr-un tabel#
######################################

#creez tabel temporar `goodtable`

CREATE TABLE `goodtable` (
  `c1` int(10) unsigned NOT NULL auto_increment,
  `c2` varchar(10) NOT NULL default '',
  `c3` varchar(10) NOT NULL default '',
  KEY `c1` (`c1`)
) ENGINE=MyISAM;

#inserez valorile unice din `table` (tabela initiala) in `goodtable`

INSERT INTO `goodtable`

SELECT `table`.`c1`,
    `table`.`c2`,
    `table`.`c3`
FROM `table`
GROUP BY `table`.`c2`, `table`.`c3`
ORDER BY `table`.`c1`;

#golesc tabela `table`

TRUNCATE TABLE `table`;

#inserez datele din unice din `goodtable` in `table`

INSERT INTO `table`

SELECT * FROM `goodtable`
ORDER BY `c1` ASC;

#sterg tabela `goodtable`

DROP TABLE `goodtable`;
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community