konto usunięte

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

Witajcie,

Troche szukalem w Sieci ale nie znalazlem nic - moze szukalem w zly sposob ;-)

Przypadek - Mam dwie tabele w ktorych jest 20 kolumn. Czesc kolumn z obu tabel pokrywa sie nazwami. Robie zapytanie i chce wyciagnac wszystkie rekordy zlozone z wszystkich kolumn w obu tabelach. Tylko ze nie znam nazw tych kolumn - czy to sie da jakos zrobic ? Znajac nazwy kolumn porobil bym sobie aliasy i z glowy - tyleze ich nie znam. Czy da sie cos z tym zrobic czy raczej jest to nierealizowalne ?Paweł Krefta edytował(a) ten post dnia 07.12.09 o godzinie 12:31

konto usunięte

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

Moze porob sobie aliasy na tabele? :)

konto usunięte

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

http://dev.mysql.com/doc/refman/5.0/en/tables-table.html
http://dev.mysql.com/doc/refman/5.0/en/columns-table.html

wystarczy zrobić jednego selecta i będziesz wiedział jakie masz tabele i kolumny

konto usunięte

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

Przemysław R.:
http://dev.mysql.com/doc/refman/5.0/en/tables-table.html
http://dev.mysql.com/doc/refman/5.0/en/columns-table.html

wystarczy zrobić jednego selecta i będziesz wiedział jakie masz tabele i kolumny

Ale ja nie mam takiej mozliwosci :-) Takie rozwiazanie ja znam, ale nie moge zastosowac ;) W tym przypadku wlasnie chodzi o to aby zrobic to jednym SELECTem
Moze porob sobie aliasy na tabele? :)

To nic nie da bo nie wyciagne wartosci kolumn o tych samych nazwach w obu tabelach.

konto usunięte

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

Paweł Krefta:
Przemysław R.:
http://dev.mysql.com/doc/refman/5.0/en/tables-table.html
http://dev.mysql.com/doc/refman/5.0/en/columns-table.html

wystarczy zrobić jednego selecta i będziesz wiedział jakie masz tabele i kolumny

Ale ja nie mam takiej mozliwosci :-) Takie rozwiazanie ja znam, ale nie moge zastosowac ;) W tym przypadku wlasnie chodzi o to aby zrobic to jednym SELECTem

jak wiesz jakie masz kolumny i jakie tabele to spokojnie zrobisz to za pomocą jednego selecta i aliasów dla kolumn

select tabela1.kol as kol_1, tabela3.kol as kol_2
FROM tabela1, tabela2
where tabela1.id = tabela2.id

przykład z palca!

* nie jest koniecznie potrzebna do wykonania zapytania

Moze porob sobie aliasy na tabele? :)

To nic nie da bo nie wyciagne wartosci kolumn o tych samych nazwach w obu tabelach.

konto usunięte

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

Przemek - ale ja nie wiem jakie mam kolumny i nie moge tego sprawdzic.

Mi chodzi o cos mniej wiecej takiego

SELECT a.* AS a_*,b.* AS b_* FROM a INNER JOIN b ON ( w-k)
Paweł Krefta edytował(a) ten post dnia 07.12.09 o godzinie 12:47

konto usunięte

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

Paweł Krefta:
Przemek - ale ja nie wiem jakie mam kolumny i nie moge tego sprawdzic.

Mi chodzi o cos mniej wiecej takiego

SELECT a.* AS a_*,b.* AS b_* FROM a INNER JOIN b ON ( w-k)

skoro możesz takiego SQl-a jak wyżej to możesz zrobić coś takiego:

SELECT table_name, COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
Przemysław R. edytował(a) ten post dnia 07.12.09 o godzinie 12:51

konto usunięte

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

Ale ja moge wykonac tylko jedno zapytanie - w tym jest haczyk :-)

konto usunięte

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

w takim wypadku: to se ne da

albo podajesz jawnie nazwy kolumn, albo dajesz gwiazdkę, składanie aliasów nazw kolumn w sposób jaki byś chciał jest niedozwolone i tego nie przeskoczysz
Irek Słonina

Irek Słonina programowanie, bazy
danych i linuksy

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

A nie można po prostu SELECT * FROM?
Przecież wiesz ile masz kolumn - więc pewnie możesz je sobie później wyciągnąć po indeksach.
Ewentualnie SELECT * FROM i wyciągniesz sobie listę kolumn z wyniku.

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora

konto usunięte

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

Wojciech Gardziński:
Cze.
Zrób sobie plik Accessa i daj obie tabele SQLS (lub inne, jakie chcesz) jako 'dołączone'
Potem zrób kwerendę z joinem.

np.
SELECT dbo_ODBIORCA.*, dbo_FAKTURA.*
FROM dbo_ODBIORCA INNER JOIN dbo_FAKTURA ON dbo_ODBIORCA.NAZWA=dbo_FAKTURA.NAZWA;

Będziesz miał nazwy pól poprzedzone nazwami tabel
np. dbo_faktura.nazwa i dbo_odbiorca.nazwa
Samo się robi :)

Ale pytanie dotyczy MySQLa.
A nie można po prostu SELECT * FROM?
Przecież wiesz ile masz kolumn - więc pewnie możesz je sobie później wyciągnąć po indeksach.
Ewentualnie SELECT * FROM i wyciągniesz sobie listę kolumn z wyniku.

W obu tabelach mam np kolumne o nazwie content. Jak wyciagnac wartosci z obu tabel z takiego zapytania wg Ciebie skoro MySQL wyrzuci w wyniku zapytania tylko jedna kolumne o nazwie content ?

konto usunięte

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

ale dlaczego tylko jedno zapytanie?
chcesz pobrać te dane nielegalnie?
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

Paweł Krefta:
>Jak wyciagnac
wartosci z obu tabel z takiego zapytania wg Ciebie skoro MySQL wyrzuci w wyniku zapytania tylko jedna kolumne o nazwie content ?

A sprawdzałeś? Bo moim zdaniem wyrzuci kolumny z obu tabel i tylko kolumny na których jest JOIN wystąpią pojedyńczo (ale skoro są sobie równe, to nie jest problem)

konto usunięte

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

nie weim czy dobrze zrozumiałem ale zrób alias np: aaa.*

konto usunięte

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

Michał Jarosz:
Paweł Krefta:
>Jak wyciagnac
wartosci z obu tabel z takiego zapytania wg Ciebie skoro MySQL wyrzuci w wyniku zapytania tylko jedna kolumne o nazwie content ?

A sprawdzałeś? Bo moim zdaniem wyrzuci kolumny z obu tabel i tylko kolumny na których jest JOIN wystąpią pojedyńczo (ale skoro są sobie równe, to nie jest problem)
Zwroci obie kolumny w wyniku owszem - tylko one maja ta sama nazwe i niestety biblioteka w PHP do obslugi MySQL sobie z tym nie radzi.
Myslalem ze moze ktos poprostu zna rozwiazanie jak np dopisac automatycznie prefix do pol pobieranych z danej tabeli albo cos pozwalajacego wyciagnac oba pola w wyniku bez aliasowania :-)
ale dlaczego tylko jedno zapytanie?
chcesz pobrać te dane nielegalnie?

Pozostawie bez komentarza...

konto usunięte

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

Przejdź na nowszą wersję mySQL, to błąd po ich stronie.
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

Paweł Krefta:
Zwroci obie kolumny w wyniku owszem - tylko one maja ta sama nazwe i niestety biblioteka w PHP do obslugi MySQL sobie z tym nie radzi.

Opowiadasz.
http://www.php.net/manual/en/mysqli-result.fetch-array...
Możesz sobie zażyczyć tablicę indeksowaną numerycznie, gdzie będziesz miał wszystkie kolumny.
Z kolei z
http://www.php.net/manual/en/mysqli-result.fetch-field...
dostaniesz nazwy kolumn

konto usunięte

Temat: MySQL - JOINy i kolumny o tej samej nazwie w tabeli

Michał Jarosz:
Paweł Krefta:
Zwroci obie kolumny w wyniku owszem - tylko one maja ta sama nazwe i niestety biblioteka w PHP do obslugi MySQL sobie z tym nie radzi.

Opowiadasz.
http://www.php.net/manual/en/mysqli-result.fetch-array...
Możesz sobie zażyczyć tablicę indeksowaną numerycznie, gdzie będziesz miał wszystkie kolumny.
Z kolei z
http://www.php.net/manual/en/mysqli-result.fetch-field...
dostaniesz nazwy kolumn

Dzieki za pomoc :-) Na to nie wpadlem :-)

Następna dyskusja:

[MySQL] Kolumny na rzędy




Wyślij zaproszenie do