За последние 24 часа нас посетили 21648 программистов и 1020 роботов. Сейчас ищут 649 программистов ...

Отобрать данные из одной таблицы по другой

Тема в разделе "MySQL", создана пользователем graf_vorontsov, 11 мар 2013.

  1. graf_vorontsov

    graf_vorontsov Активный пользователь

    С нами с:
    12 фев 2011
    Сообщения:
    183
    Симпатии:
    1
    Адрес:
    Украина, Харьков
  2. graf_vorontsov

    graf_vorontsov Активный пользователь

    С нами с:
    12 фев 2011
    Сообщения:
    183
    Симпатии:
    1
    Адрес:
    Украина, Харьков
    сделал. выбирается :)
    я новичёк, и поэтому мне трудновато сразу найти правильное решение.
    Спасибо за подсказку ;)
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    ты новичек, поэтому ничерта не понятно что тебе требуется =) вот и сложности с ответами возникают.
     
  4. graf_vorontsov

    graf_vorontsov Активный пользователь

    С нами с:
    12 фев 2011
    Сообщения:
    183
    Симпатии:
    1
    Адрес:
    Украина, Харьков
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    а когда вопросы будут точными, то и ответы на них ты сможешь находить самостоятельно. Замкнутый круг.
     
  6. graf_vorontsov

    graf_vorontsov Активный пользователь

    С нами с:
    12 фев 2011
    Сообщения:
    183
    Симпатии:
    1
    Адрес:
    Украина, Харьков
    капец! ужасно долго выгружается, опять я написал неправильно

    Добавлено спустя 4 минуты 22 секунды:
    Код (PHP):
    1.        function escape($string) {
    2.         if($string) {
    3.             return mysql_real_escape_string($string);
    4.         }
    5.     }
    6.     
    7.     function insert($string){
    8.         $data = array();
    9.             $i = 0;
    10.  
    11.             $res = mysql_query("SELECT * FROM tof_art_lookup_sort where `tof_art_lookup_sort`.`ARL_ART_ID` IN ($string)");
    12.  
    13.             while($r = mysql_fetch_array($res)) {
    14.         
    15.                 $data[]="('".escape($r['ARL_ART_ID'])."','".escape($r['ARL_SEARCH_NUMBER'])."','".escape($r['ARL_BRA_ID'])."','".escape($r['ARL_DISPLAY_NR'])."')";
    16.                 ++$i;
    17.                 if(50<$i) {
    18.                     $query = mysql_query('INSERT INTO `tof_art_lookup_xx`(`ARL_ART_ID`,`ARL_SEARCH_NUMBER`,`ARL_BRA_ID`,`ARL_DISPLAY_NR`) VALUES '.join(',',$data));
    19.                     $i=0;
    20.                     $data=array();
    21.                 }
    22.             }
    23.         if(sizeof($data)) {
    24.             $query = mysql_query('INSERT INTO `tof_art_lookup_xx`(`ARL_ART_ID`,`ARL_SEARCH_NUMBER`,`ARL_BRA_ID`,`ARL_DISPLAY_NR`) VALUES '.join(',',$data));
    25.         }
    26.     }
    27.  
    28. $x = 0;
    29.     
    30.     $count_x = mysql_query("SELECT * FROM `vag_count`");
    31.     
    32.     while($xx = mysql_fetch_array($count_x)) { 
    33.         
    34.         $data_x = $xx['ARL_ART_ID00'];
    35.         ++$x;
    36.         if(0<$x){
    37.             
    38.             insert($data_x);
    39.             
    40.         }
    41.     }
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    заведи лог запросов. покажи все запросы так как они идут. =) посмотрим.

    ужасно долго это сколько? какое железо у сервера? может он не тянет быстрее.
     
  8. graf_vorontsov

    graf_vorontsov Активный пользователь

    С нами с:
    12 фев 2011
    Сообщения:
    183
    Симпатии:
    1
    Адрес:
    Украина, Харьков
    ну за сутки выгрузило 40 тысяч строк

    Добавлено спустя 3 минуты 8 секунд:
    я знаю как можно ускорить, в ручную так делал
    подставлял сюда IN ($string) сразу пару сотен запросов, но не пойму как сделать их автоматом, а так тут только одно число вставляется и поэтому так долго
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    что за изврат с иксом?
    ++$x;
    if (0 < $x) {

    Добавлено спустя 1 минуту 41 секунду:
    $count_x = mysql_query("SELECT * FROM `vag_count`");
    это что? сколько их там? может попробовать выбирать только одно интересующее тебя поле?
     
  10. graf_vorontsov

    graf_vorontsov Активный пользователь

    С нами с:
    12 фев 2011
    Сообщения:
    183
    Симпатии:
    1
    Адрес:
    Украина, Харьков
    это чтоб каждую последующую строчку читало
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    что за манера if (50 < $i) {
    =)

    Добавлено спустя 19 секунд:
    сколько их?
     
  12. graf_vorontsov

    graf_vorontsov Активный пользователь

    С нами с:
    12 фев 2011
    Сообщения:
    183
    Симпатии:
    1
    Адрес:
    Украина, Харьков
    там одно поле только, строк в той таблице 310 тысяч
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    `tof_art_lookup_sort`.`ARL_ART_ID` по этом полю индекс есть?

    Добавлено спустя 2 минуты 13 секунд:
    выбирай порциями! =)
    как так? о_О это поле с числами, перечисленными через запятую? и оно ни к чему не привязано? дай глянуть структуру этой таблицы плс.
     
  14. graf_vorontsov

    graf_vorontsov Активный пользователь

    С нами с:
    12 фев 2011
    Сообщения:
    183
    Симпатии:
    1
    Адрес:
    Украина, Харьков
    Код (Text):
    1. ARL_ART_ID00
    2.  
    3. 3
    4.  
    5. 4
    6.  
    7. 5
    8.  
    9. 8
    10.  
    11. 28
    12.  
    13. 54
    Добавлено спустя 36 секунд:
    нет числа не через запятую, каждое число в новой строке
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    структуру таблицы, и объясни зачем тебе эта таблица вообще

    если там просто айдишники, какой от них смысл? почему они внутри полей? почему так? зачем?
     
  16. graf_vorontsov

    graf_vorontsov Активный пользователь

    С нами с:
    12 фев 2011
    Сообщения:
    183
    Симпатии:
    1
    Адрес:
    Украина, Харьков
    главная таблица tof_art_lookup_sort
    Код (Text):
    1.    
    2. ARL_ART_ID  ARL_SEARCH_NUMBER  ARL_BRA_ID  ARL_DISPLAY_NR
    3. 1  063320055  95  0633  20055
    4. 1  63321510  95  6332 1510
    5. 1  731695001  2  731 695-001
    6. 2  731696001  2  731 696-001
    7. 3  K114V2365A  30  K1 (-) 14V 23/65A
    8. 3  731701001  2  731 701-001
    9. 3  0120488144  30  0 120 488 144
    10. 4  N114V3490A  30  N1 (-) 14V 34/90A
    11. 4  731702001  2  731 702-001
    12. 4  0986038340  30   0 986 038 340
    13. 4  037903018AX  587  037 903 018 AX
    таблица по которой производится отбор vag_count
    Код (Text):
    1.  
    2. ARL_ART_ID00
    3.  
    4. 3
    5.  
    6. 4
    7.  
    8. 5
    9.  
    10. 8
    11.  
    12. 28
    13.  
    14. 54
    ARL_ART_ID = ARL_ART_ID00


    во второй таблице, в которой одно поле, находятся значения по которым производится отбор из первой таблицы(так как мне не надо все значения из таблицы 1, мне надо чтоб они соответствовали значениям из таблицы 2)
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    у меня крыша едет чувак, реально

    КАК И К ЧЕМУ ПРИВЯЗАНО ЕДИНСТВЕННОЕ ПОЛЕ-ТО?????

    Зачем тебе триста десять тысяч комбинаций? которые не привязаны ни к чему? О__О

    у тебя триста десять тысяч комбинаций строк из другой таблицы? так?
     
  18. graf_vorontsov

    graf_vorontsov Активный пользователь

    С нами с:
    12 фев 2011
    Сообщения:
    183
    Симпатии:
    1
    Адрес:
    Украина, Харьков
    капец!
    1) есть таблица tof_art_lookup_sort
    с полями
    Код (Text):
    1. ARL_ART_ID      ARL_SEARCH_NUMBER     ARL_BRA_ID     ARL_DISPLAY_NR
    и таблица vag_count с полем
    Код (Text):
    1. ARL_ART_ID00
    2) в поле ARL_ART_ID00 содержится часть номеров которые есть в таблице tof_art_lookup_sort в поле ARL_ART_ID
    3) надо отобрать все значения таблицы tof_art_lookup_sort с соответствием по полю ARL_ART_ID = ARL_ART_ID00
    4) что ещё не понятно? я вроде объяснил уже милион раз проблему, и показываю как решаю её, но прошу помощи в быстроте отбора данных
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    чувак, ну не понятно мне, не понятно. я тупой. давай так объясни, чтобы даже я понял.

    1. у тебя в поле ARL_ART_ID00 таблицы vag_count содержатся группы айдишников строк из таблицы tof_art_lookup_sort
    2. их там 310 000 штук таких групп.
    3. и больше ничего нет!!!!!!!!!!

    какой в этом смысл?
     
  20. graf_vorontsov

    graf_vorontsov Активный пользователь

    С нами с:
    12 фев 2011
    Сообщения:
    183
    Симпатии:
    1
    Адрес:
    Украина, Харьков
    ))))))))
    1) да
    2) да
    3) нет, ну и что, а и не надо в той таблице больше ничего
    4) зато у меня всё есть в таблице tof_art_lookup_sort, но дохрена !! мне столько не надо, вот я и пытаюсь выбрать только то что мне надо, а то что мне надо содержится в таблице в которой только одно поле, вот и пытаюсь отобрать эти данные

    я не знаю ещё как подробнее объяснить...
    есть 50 яблок в корзине
    20 зелёных
    5 красных
    10 белых
    15 сгнили

    ..выбираю только хорошие (т.е. зелёные, красные, белые)
    Код (Text):
    1. SELECT * FROM корзина where `корзина`.`цветовое описание` IN (зелёные, красный, белый)
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    ок. вопрос такой. нафига у тебя 310 000 вариантов?
    я к этому веду весь день.
    Если ты всё равно потом фигачишь всё в одну таблицу. Ты уверен, что ты не перебираешь одни и те же строки по сто раз? Ты уверен, что айдишники не повторяются в 310к комбинациях? ты уверен, что тебе нужны именно 310к ни к чему не привязанных комбинаций?

    может просто завести таблицу, где хранить айдишники, которые "хорошие", а все остальные считать гнилыми (или наоборот)?
    почему у тебя 310 тысяч комбинаций одного и того же без всяких различий? =) это вообще здраво? шизой попахивает. Либо ты что-то по дороге потерял, либо недоговариваешь.
     
  22. graf_vorontsov

    graf_vorontsov Активный пользователь

    С нами с:
    12 фев 2011
    Сообщения:
    183
    Симпатии:
    1
    Адрес:
    Украина, Харьков
    да, 310 000 вариантов
    вот насчёт перебираю или нет строки по многу раз не уверен...
    айдишники в таблице vag_count не повторяются - это точно! а в таблице tof_art_lookup_sort повторяются(в примере выше это видно)
    они привязаны ARL_ART_ID = ARL_ART_ID00
    таблица с "хорошими айдишниками" это и есть таблица vag_count
     
  23. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    а почему они у тебя собраны в группы?
     
  24. graf_vorontsov

    graf_vorontsov Активный пользователь

    С нами с:
    12 фев 2011
    Сообщения:
    183
    Симпатии:
    1
    Адрес:
    Украина, Харьков
    в какие группы?
     
  25. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    а, значит там по одному, да. точно. прости.

    тогда точно надо конкат попробовать =) если сервер не умрёт.

    Ты уверен, что они у тебя уникальные? или ты хотел бы чтобы они не повторялись?