Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyszukiwarka - zapytania do kilku tabel
Taz40
post 15.06.2003, 09:31:36
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
Go to the top of the page
+Quote Post
wojtek
post 15.06.2003, 11:29:13
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.
Go to the top of the page
+Quote Post
Taz40
post 15.06.2003, 11:36:33
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
Go to the top of the page
+Quote Post
scanner
post 15.06.2003, 11:52:30
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

  `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
NIe wiem jednak, czy to to czego potzrebujesz, bo nie wiem, co masz za dane i jak je chcesz wyświetlić.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Taz40
post 15.06.2003, 12:21:38
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ć:
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
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.


--------------------
Pozdrawiam - Taz40
http://www.strefasoftu.net/
Go to the top of the page
+Quote Post
scanner
post 15.06.2003, 12:36:10
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.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
kurtz
post 16.06.2003, 10:35:12
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 ..
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 09:12