Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pobranie dwóch kolumn z jednej tabeli jednocześnie
Forum PHP.pl > Forum > Bazy danych > MySQL
mb83
Witam,

Pytanie mam: czy da się pobrać jednym zapytaniem select pobrać dwie kolumny z jednej tabeli?
Albo za pomocą np. pobranego elementu id wpisu pobrać dodatkowo jeszcze np. nazwę kategorii?

Przykład:
Mam wpis:

id | tytul | kategoria

Pobieram wpis o numerze np. 104 a pod nim wypisuje wpisy o takiej samej kategorii.

Wiem, że można to zrobić na zasadzie łączenia tabel ale tutaj tak się nie da ponieważ wszystkie informacje są w jednej tabeli.


Dzięki za pomoc
nospor
1) Problem z php nie ma zadnego zwiazku. Przenosze
2)
Cytat
Wiem, że można to zrobić na zasadzie łączenia tabel ale tutaj tak się nie da ponieważ wszystkie informacje są w jednej tabeli.

Nic nie stoi na przeszkodzie łączyc ze sobą te samą tabele. Musisz jej tylko nadac inny alias
mb83
a w jaki sposób ten alias nadać? concat? jak sformułować zapytanie?
nospor
LEFT JOIN
mb83
czy mogę prosić o jakieś przykładowe zapytanie?
nospor
Na co przyklad? Na left joi z aliasem??
http://dev.mysql.com/doc/refman/5.0/en/join.html
Prosze cie bardzo. Opis z całą masą przykładów.
mb83
ok, dałem radę.
pozostał tylko jeszcze jeden problem:
jak pobiorę newsa numer 104 i pod nim wypiszę inne newsy pasujące do kategorii to jak zrobić aby nie był wyświetlany news 104 w tej liście?

jeśli użyję 'not like='104' to daje mi to wszystkie kategorie (a nie tą jedną przypisaną dla 104).

limit też nie za bardzo pasuje bo pobrany id musiałby być albo najmniejszy albo największy.

dzięki za wyrozumiałość, czasami najprostsze rozwiązania są najgorsze :-)
mar1aczi
Tak po polsku:
Wybierz wszystkie newsy, które należą do tej samej kategorii co news 104 i numer newsa jest różny od 104 wink.gif
mb83
  1. select k.kategoria, b.kategoria, b.tytul, b.id from newsy k left join newsy b on k.kategoria=b.kategoria where b.id = '104'


coś źle napisałem?

a jak użyję:

  1. select k.kategoria, b.kategoria, b.tytul, b.id from newsy k left join newsy b on k.kategoria=b.kategoria where b.id <> '104'


to daje wszystkie newsy, które mają takie same kategorie. czyli ogólnie mówiąc wszystkie :-)
nospor
Do JOIN masz dodac warunek na roznosc od 104 a nie do WHERE.... Where ma pozostac bez zmian
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.