[sql] Вопросы по БД

Discussion in 'PHP' started by FraiDex, 25 Feb 2008.

Thread Status:
Not open for further replies.
  1. Freakazoitt

    Freakazoitt Elder - Старейшина

    Joined:
    2 Jun 2008
    Messages:
    35
    Likes Received:
    1
    Reputations:
    0
    Есть таблица (допустим 'table'), там есть записи, есть ячейки и т.д.
    Иногда в ячейке 'asd' появляются записи, одинаковые для разных строк
    Еще есть ячейка 'side'

    Как извлечь это число (если оно оlинаково для двух и более записей и при этом у них разное 'side')?
     
  2. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    таблица users, поля id,username,pass,email,
    таблица ratings, поля id,user_id,rating,rateable
     
  3. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    "по рейтингу" - как-то расплывчато, может это?

    SELECT t1.*, SUM(t2.rating)
    FROM users AS t1
    LEFT JOIN ratings AS t2 ON t1.id=t2.user_id
    GROUP BY t1.id limit 0,10
     
  4. Freakazoitt

    Freakazoitt Elder - Старейшина

    Joined:
    2 Jun 2008
    Messages:
    35
    Likes Received:
    1
    Reputations:
    0
    Кто-нибудь читает раздел???
     
  5. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Как-то ты не по-русски написал)
    Уточни что за число. И еще , ячейка я так понимаю это столбец?


    Если я правильно тебя понял, то получится следующее:
    PHP:
    SELECT idasd
    FROM rndtable
    GROUP BY asd
    HAVING COUNT
    asd ) >1
    AND id
    IN 
    (
    SELECT id
    FROM rndtable
    GROUP BY side
    HAVING COUNT
    side ) =1
    )
     
    #1005 Chaak, 29 Jan 2010
    Last edited: 29 Jan 2010
    1 person likes this.
  6. Freakazoitt

    Freakazoitt Elder - Старейшина

    Joined:
    2 Jun 2008
    Messages:
    35
    Likes Received:
    1
    Reputations:
    0
    Вобщем для примера:
    таблица table
    --
    id -- asd -- side
    1 -- 34 ---- 1
    2 -- 34 ---- 1
    3 -- 55 ---- 1
    4 -- 55 ---- 2

    так вот надо извлечь число "55", поскольку там одинаковое asd но разное side.

    // такая комбинация может возникнуть только с одним числом asd - просто примечание
     
  7. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Возможно так
    Code:
    SELECT DISTINCT `asd` FROM `sometable` GROUP BY `asd`, `side` HAVING COUNT(*) = 1;
    
     
  8. Fakamaz

    Fakamaz New Member

    Joined:
    1 Feb 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    !!!!

    Как правильно реализовать запрос к MySQL?
    Имеется таблица 01_sites с столбцом plan нужно как то отсортировать данные по убыванию при plan-$d3
    $d3 - это переменная в коде php :confused:
     
  9. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    "SELECT plan FROM 01_sites ORDER BY plan DESC"
     
  10. Fakamaz

    Fakamaz New Member

    Joined:
    1 Feb 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Мне надо не по столбику plan отсортировать,а по переменной так скажем $d4=Некое_число-$row["plan"]; И выводить по убыванию по переменной $d4
     
  11. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    PHP:
    $some_number 123;
    mysql_query ("SELECT *, ($some_number - plan) AS d4 FROM 01_sites ORDER BY d4 DESC");
     
  12. Fakamaz

    Fakamaz New Member

    Joined:
    1 Feb 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Спасибо большое помогло
     
  13. Komyak

    Komyak Banned

    Joined:
    14 Jan 2009
    Messages:
    202
    Likes Received:
    18
    Reputations:
    1
    Нужно сделать запрос к бд и узнать id последней строки. Не представляю как это можно реализовать.
     
  14. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    отсортируй в обратном порядке (DESC или ASC) и бери первый элемент
     
  15. Komyak

    Komyak Banned

    Joined:
    14 Jan 2009
    Messages:
    202
    Likes Received:
    18
    Reputations:
    1
    Мне в скрипте (как написал выше) нужно вставлять данные в базу, правильно ли будет, если запрос будет такого рода:
    PHP:
    $sql 'INSERT INTO `post` VALUES (LAST_INSERT_ID(), ''user'', '''')';
    В смысле постоянно будут делаться такие запросы. Для меня ещё трудно ориентироваться в sql, поэтому такие трудности придумываю.
     
  16. Spyder

    Spyder Elder - Старейшина

    Joined:
    9 Oct 2006
    Messages:
    1,388
    Likes Received:
    1,209
    Reputations:
    475
    Вопрос по MySQL. Есть таблица orders такого вида
    Code:
    CREATE TABLE `orders` (
    `order_id` int(10) NOT NULL auto_increment,
    `order_total` float NOT NULL default '0',
    `order_date` datetime default '0000-00-00 00:00:00',
    `date_accepted` datetime NOT NULL,
    `date_rejected` datetime NOT NULL,
    `ship_date` datetime NOT NULL,
    `ship_method` varchar(45) NOT NULL default 'FEDEX2DAY',
    `sat_deliv` varchar(3) default 'no',
    `customer_id` int(11) NOT NULL default '0',
    `status` int(11) NOT NULL default '0',
    `p` tinyint(1) NOT NULL default '0',
    `phys_id` int(11) NOT NULL default '0',
    `shipping` float NOT NULL default '0',
    `payment_type` varchar(50) NOT NULL,
    `trans_id` varchar(200) NOT NULL,
    `p_id` int(11) NOT NULL default '1',
    `notes` text NOT NULL,
    `session_data` longtext NOT NULL,
    PRIMARY KEY (`order_id`),
    UNIQUE KEY `order_id` (`order_id`),
    KEY `order_date` (`order_date`),
    KEY `customer_id` (`customer_id`),
    KEY `ship_date` (`ship_date`),
    KEY `Index_5` (`status`),
    KEY `Index_6` (`p`),
    KEY `phys_id` (`phys_id`),
    KEY `order_date_2` (`order_date`)
    ) ENGINE=InnoDB AUTO_INCREMENT=62489 DEFAULT CHARSET=latin1 PACK_KEYS=0 COMMENT='InnoDB free: 37888 kB'
    
    Задача: Изменить тип поля order_id с INT на VARCHAR( либо TEXT или BLOB). Собственно в чем проблема

    alter table orders modify order_id varchar(100)

    Error: Error on rename of './db_name/#sql-45fd_8573d7' to './db_name/orders' (errno: 150)

    alter table orders modify order_id text

    Error: BLOB/TEXT column 'order_id' used in key specification without a key length

    Подскажите как все таки поменять тип у поля
     
  17. Komyak

    Komyak Banned

    Joined:
    14 Jan 2009
    Messages:
    202
    Likes Received:
    18
    Reputations:
    1
    Может Sypex Dumper
     
    1 person likes this.
  18. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    Какую команду надо отправить чтобы получить значение поля: "user" записи с id: 1?

    ps: гугол молчит и дает много мусора...
     
  19. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    sql
    Code:
    SELECT user FROM table_name WHERE id=`1`;
     
    1 person likes this.
  20. Cybersteger

    Cybersteger Member

    Joined:
    9 Oct 2009
    Messages:
    40
    Likes Received:
    13
    Reputations:
    15
    Подскажите как сдампить таблицу на PostgreSql ?
     
Thread Status:
Not open for further replies.