Portál AbcLinuxu, 18. července 2025 19:30


Dotaz: mysql - select + join : z jaké tabulky jsou data?

3.3.2012 19:14 Dan.K.
mysql - select + join : z jaké tabulky jsou data?
Přečteno: 962×
Odpovědět | Admin
Ahoj.
Mám nějaký select se joinem a jaké výsledek bych chtěl mít data, ale rád bych věděl z jaké tabulky ty data jsou.

Mám třeba dvě tabulky:
tabulka: xxx
sloupce: id_x, aaa, bbb
tabulka: yyy
sloupce: id_y, ccc, ddd


Chtěl bych nějaký takovýhle dotaz:
SELECT * FROM xxx JOIN yyy ON xxx.id_x = yyy.id_y


Ale nyní mám výsledek:
id_x = nějaká hodnota
aaa = nějaká hodnota
....atd.


Ale já bych chtěl výsledek, abych věděl z jaké tabulky ty data jsou.
Tedy něco jako:
xxx.id_x = nějaká hodnota
xxx.aaa = nějaká hodnota
...
yyy.id_y = nějaká hodnota
...atd.


Je to možné udělat, když mám jako select hvězdičku? Díky.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.3.2012 19:41 l0gik | skóre: 22
Rozbalit Rozbalit vše Re: mysql - select + join : z jaké tabulky jsou data?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Není. Pokud chceš sloupce přejmenovat, musíš je vyjmenovat explicitně. Není to takovej problém, protože si můžeš z information_schema (předpokládám, že to řeší v mysql) ty názvy sloupců získat a do SQL skriptu je vložit "automaticky".

http://dev.mysql.com/doc/refman/5.0/en/columns-table.html
3.3.2012 20:36 jekub
Rozbalit Rozbalit vše Re: mysql - select + join : z jaké tabulky jsou data?
Odpovědět | | Sbalit | Link | Blokovat | Admin
smím se zeptat k čemu tuto informaci potřebujete?
3.3.2012 21:07 jekub
Rozbalit Rozbalit vše Re: mysql - select + join : z jaké tabulky jsou data?
ale neměl by to být problém.
typedef struct st_mysql_field {
  char *name;                 /* Name of column */
  char *org_name;             /* Original column name, if an alias */
char *table;                /* Table of column if column was a field */  
  char *org_table;            /* Org table name, if table was an alias */
  char *db;                   /* Database for table */
  char *catalog;	      /* Catalog for table */
  char *def;                  /* Default value (set by mysql_list_fields) */
  unsigned long length;       /* Width of column (create length) */
  unsigned long max_length;   /* Max width for selected set */
  unsigned int name_length;
  unsigned int org_name_length;
  unsigned int table_length;
  unsigned int org_table_length;
  unsigned int db_length;
  unsigned int catalog_length;
  unsigned int def_length;
  unsigned int flags;         /* Div flags */
  unsigned int decimals;      /* Number of decimals in field */
  unsigned int charsetnr;     /* Character set */
  enum enum_field_types type; /* Type of field. See mysql_com.h for types */
  void *extension;
} MYSQL_FIELD;
4.3.2012 06:55 Dan.K.
Rozbalit Rozbalit vše Re: mysql - select + join : z jaké tabulky jsou data?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Díky.
No, z toho se mi to stejně nějak nepodařilo rozluštit, abych si mohl pozměnit to pojmenování sloupců :( Takže to asi nepůjde :( ...nebo aspoň mě to nejde.

Jinak proč to potřebuji?
- když už musím spojovat více než jen dvě tabulky, už je to trochu méně přehledné a já bych rád přesně věděl, které data jsou ze které tabulky
- a druhý a asi důležitější důvod je, že občas mám dvě tabulky, které mají stejný název sloupce (např. "id") a při použití hvězdiček mi to vyhazuje chybu, že je tam jeden sloupec duplikován
4.3.2012 08:34 jekub
Rozbalit Rozbalit vše Re: mysql - select + join : z jaké tabulky jsou data?
1/ pokud je dotaz z programu, není problém vygenerovat aliasy

2/ nebo použijte pohled (view), kde si sloupce pojmenujete jak chcete (tab1_col1, ..., tabN_colN)
4.3.2012 09:00 Kit
Rozbalit Rozbalit vše Re: mysql - select + join : z jaké tabulky jsou data?
Většinou potřebuji z každé tabulky jen některé údaje a zrovna "id" mě zpravidla vůbec nezajímají. Zastávám názor, že vývojář by měl přesně vědět, které sloupce z tabulky potřebuje a jen ty uvádí v dotazu.

Jinými slovy bych hvězdičky nechal jen v úvodních kapitolách učebnic a nerefaktorovaných aplikacích.
6.3.2012 21:09 DK
Rozbalit Rozbalit vše Re: mysql - select + join : z jaké tabulky jsou data?
hvezdicky nepouzivej, bude to o dost pomalejsi, pokud mas schema xxx
- id
- aaa
yyy
- id
- bbb
- ccc
zzz
- id
- ddd
- eee
...
tak pouzij SELECT xxx.aaa,yyy.bbb,zzz.ddd,zzz.eee FROM xxx LEFT JOIN yyy ON xxx.id=yyy.id LEFT JOIN zzz ON xxx.id=zzz.id
7.3.2012 16:50 sidik
Rozbalit Rozbalit vše Re: mysql - select + join : z jaké tabulky jsou data?
SELECT
tabulka1.jmeno tabulka1_jmeno,
tabulka2.jmeno tabulka2_jmeno
FROM prvni_tabulka tabulka1
LEFT JOIN druha_tabulka tabulka2
ON tabulka2.id = tabulka1.taky_id
Musíš sloupce vyjmenovat, což je stejně rozumný nápad, protože tahat všechno, ikdyž potřebuješ ve výsledku třeba jen tři nebo čtyři sloupce, je prasárna ;)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.