![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zablokowani Postów: 10 Pomógł: 0 Dołączył: 20.03.2003 Skąd: StrefaSoftu.net Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Przeczytałem wczoraj wiekszość postów o zapytaniach do kilku tabel jednocześnie i prawde powiedziawszy wszystko już mi się miesza. Wszędzie gdzie nie zajrzę widzę coś w stylu: [php:1:b9a0de9e01] <? SELECT pole1.tabela1, pole1.tabela2 FROM tabela1, tabela2; ?> [/php:1:b9a0de9e01] Problem leży w tym, że zastosowałem to u siebie i niestety zamiast rezultatów wywala się błąd: "supplied argument is not a valid". Potrzebuję zapytać kilka tabel jednocześnie (powiedzmy 10) i wyświetlić wyniki. Mój kod wygląda tak: [php:1:b9a0de9e01] <? require ("admin/config.php"); $connection = mysql_connect($dbhost, $dbusername, $dbpassword); $key = "w"; //key pobierany jest z formularza //to jest tylko na próbę $result = mysql_db_query($dbname, "SELECT soft.site_down_arch, soft.site_down_cdr FROM site_down_arch, site_down_cdr WHERE soft LIKE '%$key%' ORDER BY id DESC ") $row = mysql_fetch_array($result); while ($id=$row["id"]) { $soft = $row["soft"]; $url = $row["url"]; $size = $row["size"]; $pl_url = $row["pl_url"]; $pl_size = $row["pl_size"]; print "<p align="left"><a class="down" target="_blank" onMouseOver="overlib('<center><b>Rozmiar pliku: $size</b></center>')" onMouseOut="nd();" href="$url">$soft</a></p>"; $row = mysql_fetch_array($result); } ?>[/php:1:b9a0de9e01] Tabele, o których wspominałem mają postać: [php:1:b9a0de9e01] <? CREATE TABLE site_down_cdr ( id int(15) NOT NULL auto_increment, soft mediumtext NOT NULL, url mediumtext NOT NULL, size mediumtext NOT NULL, pl_url mediumtext NOT NULL, pl_size mediumtext NOT NULL, PRIMARY KEY (id) ) TYPE=MyISAM; ?>[/php:1:b9a0de9e01] Wszystkie tabele maja jednakowe kolumny, a różnią się jedynie nazwą. Zwracam się w tym momencie o doradzenie mi jak to uryźć, bo napisać np. 10 osobnych zapytań do każdej tabeli owszem mogę, ale byloby to zbyt "toporne". Pozdrawiam - Taz40 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: -- Ostrzeżenie: (0%) ![]() ![]() |
Cytat [php:1:f8fada324b]
<? SELECT pole1.tabela1, pole1.tabela2 FROM tabela1, tabela2; ?> [/php:1:f8fada324b] Mi sie wydaje ze to powinno byc tak: [php:1:f8fada324b]<?php SELECT tabela1.pole1, tabela2.pole1 FROM tabela1, tabela2; ?>[/php:1:f8fada324b] PS. Patrzalem tylko na to zapytanie, nie analizowalem calego kodu, wiec nie wiem czy zmiana tylko tej linijki rozwiaze problem. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zablokowani Postów: 10 Pomógł: 0 Dołączył: 20.03.2003 Skąd: StrefaSoftu.net Ostrzeżenie: (0%) ![]() ![]() |
Właśnie tego typu zapytania też próbowałem, niestety bez skutecznie.
Mimo wszystko dzięki. Pozdrawiam - Taz40 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Wrzuć zapytanie do PhpMyAdmina i zobacz jaki bląd wywala. Pozatym czy nie powinno być:
Kod SELECT NIe wiem jednak, czy to to czego potzrebujesz, bo nie wiem, co masz za dane i jak je chcesz wyświetlić.
`site_down_arch`.`id` AS `id_arch`, `site_down_arch`.`soft` AS `soft_arch`, `site_down_cdr`.`id` AS `id_cdr`, `site_down_cdr`.`soft` AS `soft_cdr` FROM `site_down_arch`, `site_down_cdr` WHERE (`site_down_cdr`.`soft` LIKE '%$key%') AND (`site_down_arch`.`soft` LIKE '%$key%') ORDER BY `site_down_arch`.`id` DESC, `site_down_cdr`.`id` DESC -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zablokowani Postów: 10 Pomógł: 0 Dołączył: 20.03.2003 Skąd: StrefaSoftu.net Ostrzeżenie: (0%) ![]() ![]() |
Cytat Pozatym czy nie powinno być:
Twoje zapytanie jest jak najbardziej poprawne lecz aby osiągnąć rezultaty z wszystlich kolumn + wszystkich tabel to trzeba napisać więcej niż by to wyszło przy zapytaniu do kazdej tabeli z osobna. U mnie w po wzuceniu pytania do PhpMyAdmina wywalało ze 'id' jest dwuznaczne (coby potwierdzało dlaczego było brak rezultatów). Dałeś mi wiele do myślenia i wydaje mi się, że teraz już sobie z tym poradzę, bo wiem jak to konstruować. Wielkie thx.
Kod SELECT `site_down_arch`.`id` AS `id_arch`, `site_down_arch`.`soft` AS `soft_arch`, `site_down_cdr`.`id` AS `id_cdr`, `site_down_cdr`.`soft` AS `soft_cdr` FROM `site_down_arch`, `site_down_cdr` WHERE (`site_down_cdr`.`soft` LIKE '%$key%') AND (`site_down_arch`.`soft` LIKE '%$key%') ORDER BY `site_down_arch`.`id` DESC, `site_down_cdr`.`id` DESC -------------------- Pozdrawiam - Taz40
http://www.strefasoftu.net/ |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Jeśli coś sie powtarza, trzeba to aliasować poprzez AS. Miałem niedawno własnie taki problem przy JOINowaniu kilku tabel.
-------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 786 Pomógł: 0 Dołączył: 18.03.2002 Skąd: Wroclaw/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Jeśli coś sie powtarza, trzeba to aliasować poprzez AS. Miałem niedawno własnie taki problem przy JOINowaniu kilku tabel. asy nie sa potrzebne a pomagaja przy fetch_array. jesli korzystasz z fetch_row problem nie istnieje.
innym niezwkly skutecznym sposobem jest nie nazywanie pola indeksujacego w tabelki Id tylko IdKlucza IdFirmy IdProduktu ..... pozdrawiam -------------------- .. make web your home ..
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.07.2025 - 09:12 |