Search code examples
phpmysqlcodeigniterphoto-gallery

UPPhoto gallery using CodeIgniter and Sql


I have 2 tables: photocategories:

id_categorie   name   date

photo:

id_photo  categorie_id  smallimage  bigimage

In my view I need to have the name of the categorie and ONLY one photo random how to do this select?thx

SELECT p.id,p.categorie_id,p.largeimage,p.smallimage,c.id_categorie,c.name FROM photos p, 
photocategories c WHERE c.id_categorie=p.categorie_id ORDER BY c.Date DESC

If I have for example 5 categories I need to show for every categorie only one photo


Solution

  • you can do like this

    CREATE TABLE photocategories (
        id_category     int NOT NULL, 
        name     VARCHAR(255) , 
        date       VARCHAR(255) 
    ) ENGINE = MyISAM DEFAULT CHARACTER SET latin1;
    
    CREATE TABLE photo (
        id_photo int NOT NULL,
        id_category     int NOT NULL, 
        smallimage     VARCHAR(255) , 
        bigimage       VARCHAR(255) 
    ) ENGINE = MyISAM DEFAULT CHARACTER SET latin1;
    
    
    INSERT INTO photocategories VALUES (1, "cat1", "2014");
    INSERT INTO photocategories VALUES (2, "cat2", "2014");
    INSERT INTO photocategories VALUES (3, "cat3", "2014");
    INSERT INTO photocategories VALUES (4, "cat4", "2014");
    INSERT INTO photocategories VALUES (5, "cat5", "2014");
    
    INSERT INTO photo VALUES (1, 1, "photo1", "2014");
    INSERT INTO photo VALUES (2,1, "photo2", "2014");
    INSERT INTO photo VALUES (3,2, "photo3", "2014");
    INSERT INTO photo VALUES (4,2, "photo4", "2014");
    INSERT INTO photo VALUES (5,3, "photo5", "2014");
    INSERT INTO photo VALUES (6,3, "photo6", "2014");
    INSERT INTO photo VALUES (7,4, "photo7", "2014");
    INSERT INTO photo VALUES (8,4, "photo8", "2014");
    INSERT INTO photo VALUES (9,5, "photo9", "2014");
    INSERT INTO photo VALUES (10,5, "photo10", "2014");
    
    SELECT *
    FROM photocategories
    LEFT JOIN (SELECT * FROM photo ORDER BY RAND()) 
    tmp ON (photocategories.id_category = tmp.id_category)
    GROUP BY tmp.id_category
    ORDER BY photocategories.date;
    

    enter image description here