Тема: PHP

Ответить в теме
Страница 4 из 6 ПерваяПервая ... 2 3 4 5 6 ПоследняяПоследняя
Показано с 61 по 80 из 113
  1. Вверх #61
    User banned
    Пол
    Мужской
    Возраст
    18
    Сообщений
    8,079
    Репутация
    1903
    ТАк я пробовал:
    PHP код:
    SELECT FROM (SELECT FROM (SELECT FROM t1 LEFT JOIN t2 USING (ID))) AS temp_tab 
    LEFT JOIN t3 USING 
    (IDORDER BY ID DESC 
    Вернее, так (потому как временная таблица при соединении в одном запросе становится не нужна):
    PHP код:
    SELECT *
    FROM (SELECT FROM t1 LEFT JOIN t2 USING (ID)) LEFT JOIN t3
    USING 
    (ID)
    ORDER BY ID DESC 
    Не получается.

    Что непонятно в том, что одна таблица в левостороннем соединении должна быть слева, а остальные справа?
    Первая таблица (t1) имеет все строки. Вторая и третья не всегда имеют соответствующие строки. В них при соединении нужно вставить нулл. Это и есть левостороннее соединение.


  2. Вверх #62
    User banned
    Пол
    Мужской
    Возраст
    18
    Сообщений
    8,079
    Репутация
    1903
    Цитата Сообщение от rhangel Посмотреть сообщение
    Ну раз уж так много вопросов - я задам лишь один. А где тут в запросах создание временной таблицы?
    Комбинация select * from (...) as temp_tab ни о чём не напоминает?

    Цитата Сообщение от rhangel Посмотреть сообщение
    А в одном запросе чтобы делать, просто джойни себе сколько хочешь таблиц и как хочешь и всё. 8)
    Код?

  3. Вверх #63
    Постоялец форума
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    43
    Сообщений
    1,474
    Репутация
    697
    AS не есть создание временной таблицы, это alias. Читай: http://snippets.dzone.com/posts/show/1437

    И смотри:
    http://dev.mysql.com/doc/refman/5.1/en/left-join-optimization.html
    http://dev.mysql.com/doc/refman/5.1/en/outer-join-simplification.html
    Ну и т.п. в том же мануале. Еще про подзапросы можешь почитать. Не хочешь читать и думать, тебе подавай готовое решение. Так не пойдет.

  4. Вверх #64
    User banned
    Пол
    Мужской
    Возраст
    18
    Сообщений
    8,079
    Репутация
    1903
    Цитата Сообщение от rhangel Посмотреть сообщение
    AS не есть создание временной таблицы, это alias.
    Попробую.
    Значит, в книге ошибка...

    Цитата Сообщение от rhangel Посмотреть сообщение
    Не хочешь читать и думать, тебе подавай готовое решение. Так не пойдет.
    Тебя силком сюда никто не тянул.
    Не в состоянии ответить на вопрос о соединении трёх таблиц?
    Но значимость показать очень хочется?
    Я несколько дней бьюсь над этим. Не просто так же спрашиваю.
    Допускаю, что ошибка может быть совсем тупой, но укажи на неё...
    Последний раз редактировалось Прим Палвер; 08.01.2008 в 14:02.

  5. Вверх #65
    Постоялец форума
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    43
    Сообщений
    1,474
    Репутация
    697
    Если бы была третья ошибка, было бы на что указать. То что у тебя было неверно - исправили. Дальше надо просто с чистого листа написать запрос и все. Перечитай весь мануал по джойнам, как мускуль их оптимизирует, как работает с ними, как они обрабатываются разными движками, myisam и innodb. И проблем не будет. Я не злой, просто надо все своей головой понять, а не получить сразу готовый ответ. А вторая ошибка твоя - неумелое обращение с джойнами, куда уж больше указывать?
    Последний раз редактировалось Илья Царюк; 08.01.2008 в 14:08.

  6. Вверх #66
    User banned
    Пол
    Мужской
    Возраст
    18
    Сообщений
    8,079
    Репутация
    1903
    С alias та же фигня:
    PHP код:
    $query="select * from (GuestBook left join edit using (messageID)) alias temp_tab";
    @
    $result=$db->query($query);
    $query="select * from temp_tab left join answers using (messageID) order by messageID desc";
    @
    $result=$db->query($query); 
    Не работает...
    Синтаксис php правильный?

  7. Вверх #67
    User banned
    Пол
    Мужской
    Возраст
    18
    Сообщений
    8,079
    Репутация
    1903
    Да что исправилИ?
    Оно не работало и не работает!
    И эти "исправленные" комбинации я уже пробовал вчера.
    Кроме алиас.

    Привилегий же никаких дополнительных не нужно?
    Левостороннее соединение по двум таблицам идёт на ура. С подсоединением третьей или с созданием временной таблицы проблемы начинаются.

  8. Вверх #68
    Постоялец форума
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    43
    Сообщений
    1,474
    Репутация
    697
    Под alias я подразумевал логическое назначение AS. Создание временной таблицы я дал ссылку, надо же ж ее хоть посмотреть.

    Или ты не понимаешь назначения JOIN или не понимаешь, что нужно или используешь плохую версию mysql.

    Пойдем другим путем.
    Есть три таблицы t1,t2,t3 с полями ID и text. Нам надо объединить их, таким образом, чтобы значения t2,t3 были не обязательным.
    Таблицы примера создавались на сервере версии 5.0.45.

    В самом примитивном виде это реализует следующий запрос:

    Код:
    SELECT * 
       FROM t1 
       LEFT JOIN t2 USING(ID) 
       LEFT JOIN t3 USING(ID);
    В результате мы получим таблицу из трех объединенную по ID этих трех таблиц.

    Код:
    +----+-------+-------+------+
    | ID | text  | text  | text |
    +----+-------+-------+------+
    |  1 | text1 | text2 | NULL |
    +----+-------+-------+------+
    Где каждой строке уникального ID будет соответствовать три значения поля text из трех таблиц. В данном случае в таблице t3 не было значения для ID=1.

    Теперь облегчим немного выборку значений и добавим немного данных в наши таблицы:
    Код:
    t1:
    +----+-------+
    | ID | text  |
    +----+-------+
    |  1 | text1 |
    |  2 | text1 |
    +----+-------+
    
    t2:
    +----+-------+
    | ID | text  |
    +----+-------+
    |  1 | text2 |
    +----+-------+
    
    t3:
    +----+-------+
    | ID | text  |
    +----+-------+
    |  2 | text3 |
    +----+-------+
    Код:
    SELECT 
       t1.ID,
       t1.text AS text1,
       t2.text AS text2,
       t3.text AS text3  
    FROM t1 
       LEFT JOIN t2 USING(ID) 
       LEFT JOIN t3 USING(ID);
    Получим:
    Код:
    +----+-------+-------+-------+
    | ID | text1 | text2 | text3 |
    +----+-------+-------+-------+
    |  1 | text1 | text2 | NULL  |
    |  2 | text1 | NULL  | text3 |
    +----+-------+-------+-------+
    Последний раз редактировалось Илья Царюк; 08.01.2008 в 14:36.

  9. Вверх #69
    User banned
    Пол
    Мужской
    Возраст
    18
    Сообщений
    8,079
    Репутация
    1903
    Спасибо.
    Я думал, что там скобки ещё одни нужны.
    SELECT * FROM (t1 LEFT JOIN t2 USING(ID)) LEFT JOIN t3 USING(ID);

    Извини за наезды, но я уже пару дней не мог придумать.

    Так с временной таблицей всё же как?
    Для общего образования.

    Снова ухожу в офф...
    Последний раз редактировалось Прим Палвер; 08.01.2008 в 14:38.

  10. Вверх #70
    Постоялец форума
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    43
    Сообщений
    1,474
    Репутация
    697
    Надо доки смотреть, в доках ведь все есть.
    Скобки в данной ситуации никак не влияют. Хочешь ставь, не хочешь - не ставь. В производительности существенных отличий нет. Так что сугубо внешний вид.
    А по временной:
    Код:
    CREATE TEMPORARY TABLE t1plus23 
    SELECT 
       t1.ID,
       t1.text AS text1,
       t2.text AS text2,
       t3.text AS text3  
    FROM t1 
       LEFT JOIN t2 USING(ID) 
       LEFT JOIN t3 USING(ID);

  11. Вверх #71
    User banned
    Пол
    Мужской
    Возраст
    18
    Сообщений
    8,079
    Репутация
    1903
    С регулярными выражениями запутался. И прочитать (найти) не могу.

    Расшифруйте, кто сведущ, следующее:
    PHP код:
    ereg_replace("<a href=([^>]+)>[^<]+</a>""\\0 [\\1]"$text); 
    Особо непонятна часть "\\0 [\\1]"

  12. Вверх #72
    Постоялец форума
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    43
    Сообщений
    1,474
    Репутация
    697
    Как так не нашел?? Вот из мануала:

    This function scans string for matches to pattern, then replaces the matched text with replacement.

    The modified string is returned. (Which may mean that the original string is returned if there are no matches to be replaced.)

    If pattern contains parenthesized substrings, replacement may contain substrings of the form \\digit, which will be replaced by the text matching the digit'th parenthesized substring; \\0 will produce the entire contents of string. Up to nine substrings may be used. Parentheses may be nested, in which case they are counted by the opening parenthesis.
    Считаешь себя украинцем? Изучай украинскую историю и культуру.

  13. Вверх #73
    User banned
    Пол
    Мужской
    Возраст
    18
    Сообщений
    8,079
    Репутация
    1903
    Уже нашёд по кусочку на русском. Более-менее понятно с цифрами.

    Другое сейчас. Вот в этом:

    $msg=eregi_replace("(.*)\\[b\\](.*)\\[/b\\](.*)","\\1<b>\\2</b>\\3",$msg);

    зачем выделенное синим?

    В чём недостаток следующей конструкции?

    $msg=eregi_replace("\\[b\\](.*)\\[/b\\]","<b>\\1</b>",$msg);
    Последний раз редактировалось Прим Палвер; 24.03.2008 в 19:30.

  14. Вверх #74
    User banned
    Пол
    Мужской
    Возраст
    18
    Сообщений
    8,079
    Репутация
    1903
    Есть вопрос. К мануалам не отправлять - только что оттуда.

    Почему такое не работает:

    select count(*) from anecdots where category='after'
    и
    select count(*) from anecdots where category is NULL

    столбец category - set-тип.

    И как сделать, чтобы работало?

  15. Вверх #75
    Новичок
    Пол
    Мужской
    Возраст
    40
    Сообщений
    38
    Репутация
    15
    Почитайте внимательно мануал для SELECT. И посмотрите в сторону использования HAVING в вашем запросе вместо WHERE.

  16. Вверх #76
    User banned
    Пол
    Мужской
    Возраст
    18
    Сообщений
    8,079
    Репутация
    1903
    Нужно в одной таблице MySQL хранить данные на русском, французском, немецком и английском.

    Какую кодировку ставить в базе, в таблицах, в отдельных столбцах? Догадываюсь, что УТФ, но их несколько. Какую из них? Нужно ли и страницу html выдавать в этой же кодировке?
    Последний раз редактировалось Прим Палвер; 22.01.2009 в 18:30.

  17. Вверх #77
    Новичок
    Пол
    Мужской
    Возраст
    44
    Сообщений
    60
    Репутация
    17
    На самом деле кодировка utf-8 всего одна - не путайте ее с коллейшонами (если просто говорить то правила по которым производится сравнение строк) рекомендую использовать utf8_general_ci а лучше всего почитайте документацию по MySQL по этой теме.

    А насчет кодировки html странички - так на дворе 2009 год уже и пора бы забыть про другие кодировки кроме utf8.

  18. Вверх #78
    User banned
    Пол
    Мужской
    Возраст
    18
    Сообщений
    8,079
    Репутация
    1903
    Эх, где вы раньше были? Сайт почти доделан.

    Наверное, глупо здесь задавать вопросы.
    У меня просто денюжка закончилась на русфак.ру тогда.

    Кстати, если сайт на одном языке, к чему тогда УТФ? Из чистой любви к прекрасному? Меньше текста влезает. А уж если сайт изначально был в каком-то цп1251, проблемно его втискивать в утф.
    Последний раз редактировалось Прим Палвер; 28.01.2009 в 00:56.

  19. Вверх #79
    Постоялец форума
    Пол
    Мужской
    Адрес
    Одесса
    Сообщений
    1,589
    Репутация
    342
    Кто подскажет, почему данным код в Опере 9.5 отображается нормально - таблица цельная, а Эксплорер 6.0 - делает разные расстояния между строками таблицы.

    PHP код:
    echo "<table border = 1 CELLSPACING = 0>";
      echo 
    "<tr><td><b>ТО</b></td><td><b>Терминал</b></td></tr>";
    while (
    OCIFetch($s))
    {
        echo 
    "<tr bgcolor=#ffffff>";
        if(
    ociresult($s"DATE_LAST_COLLECTION")<>$cd and ociresult($s"ID_TO")<>$f)
            echo 
    "<td>" ociresult($s"ID_TO"). "</td><td>" ociresult($s"DATE_LAST_COLLECTION")  . "</td>";
        echo 
    "</tr>";
        
    $f ociresult($s"ID_TO"); 
    Спасибо!

  20. Вверх #80
    Новичок
    Пол
    Мужской
    Возраст
    44
    Сообщений
    60
    Репутация
    17
    Я года 3-4 назад перешел на утф и как то себя комфортно чувствую - проблем сразу на порядок меньше, правда работать с утф надо умеючи.

    А то что тесты немного больше весят так это не проблема - каналы сейчас уже не модемные.

    Насчет того насколько трудно переводить сайт или web приложение - зависит от того как оно написано, в некоторых достаточно только правильно создать базу и в шаблонах прописать нужную кодировку, а в некоторых лучше о таком и не мечтать ;-)))


Ответить в теме
Страница 4 из 6 ПерваяПервая ... 2 3 4 5 6 ПоследняяПоследняя

Похожие темы

  1. Введение в PHP, MySQL
    от Anonymous в разделе Программирование
    Ответов: 81
    Последнее сообщение: 21.03.2015, 01:17
  2. Бесплатно 25 мб места, cPanel, MySQL, PHP, CGI, Perl и др.
    от OnlineHoster в разделе Интернет :: технические вопросы
    Ответов: 1
    Последнее сообщение: 25.02.2006, 21:00
  3. помогите! PHP -> сохранение страницы с другого хоста
    от [)wad.org в разделе Программирование
    Ответов: 5
    Последнее сообщение: 22.03.2005, 15:25
  4. пмогите!!!!! (php,mysql, while();)
    от Jeno в разделе Программирование
    Ответов: 7
    Последнее сообщение: 23.11.2004, 16:07
  5. Кто у нас программирует на PHP?
    от iFog в разделе Программирование
    Ответов: 23
    Последнее сообщение: 10.03.2004, 16:35

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения