Bookmarks

Yahoo Gmail Google Facebook Delicious Twitter Reddit Stumpleupon Myspace Digg

Search queries

w2ksp4.exe, WwwxxXdbf, procmail "FROM_MAILER" patch, Use of assignment to $[ is deprecated at /usr/local/sbin/apxs line 86. , wwwxxx vim, mysql closing table and opening table, 800c5000, setgid operation not permitted, pciehp: acpi_pciehprm on IBM, WWWXXX.DBF

Links

XODOX
Impressum

#1: Neue Zeile bauen?

Posted on 2008-01-27 02:19:06 by namor

Hallo,

wie mache ich aus 2 Tabellen eine Ausgabe (Zeile)?

Beispiel:

Tabelle A

PK, TEXT
1, xyz

Ist zu verbinden mit

Tabelle B
FK, SATZART, SATZINHALT
1, Typ A, 123
1, Typ B, 456

FK ist PK aus Tabelle A

Im Ergebnis soll es so aussehen

PK, SATZART=3DTypA, SATZART=3DTyp B
1, xyz, 123, 456

Ich hoffe dass es einigerma=DFen verst=E4ndlich ist.

Report this message

#2: Re: Neue Zeile bauen?

Posted on 2008-01-27 10:01:11 by Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Report this message

#3: Re: Neue Zeile bauen?

Posted on 2008-01-28 12:05:24 by namor

On 27 Jan., 10:01, Andreas Kretschmer <akretsch...@spamfence.net>
wrote:
> begin namor wrote:
> > Tabelle A
> > PK, TEXT
> > 1, xyz
> > Ist zu verbinden mit
> > Tabelle B
> > FK, SATZART, SATZINHALT
> > 1, Typ A, 123
> > 1, Typ B, 456
> > FK ist PK aus Tabelle A
> > Im Ergebnis soll es so aussehen
> > PK, SATZART=3DTypA, SATZART=3DTyp B
> > 1, xyz, 123, 456
>
> test=3D# create table ta(pk int, txt text);
> CREATE TABLE
> test=3D*# create table tb(fk int, satzart text, inhalt int);
> CREATE TABLE
> test=3D*# copy ta from stdin;
> Enter data to be copied followed by a newline.
> End with a backslash and a period on a line by itself.>> 1 xyz
> >> \.
>
> test=3D*# copy tb from stdin;
> Enter data to be copied followed by a newline.
> End with a backslash and a period on a line by itself.
>
> >> 1 typ a 123
> >> 1 typ b 456
> >> \.
>
> test=3D# select a.pk, a.txt, sum(case when b.satzart=3D'typ a' then inhalt=

> else 0 end) as satzart_typ_a, sum(case when b.satzart=3D'typ b' then
> inhalt else 0 end) as satzart_typ_b from ta a left join tb b on
> (a.pk=3Db.fk) group by a.pk, a.txt;
> pk | txt | satzart_typ_a | satzart_typ_b
> ----+-----+---------------+---------------
> 1 | xyz | 123 | 456
> (1 row)
>
> end
> Andreas
> --
> q: why do so many people take an instant dislike to mysql?
> a: it saves time (oicu in #postgresql)
> Explaining the concept of referential integrity to a mysql user is like
> explaining condoms to a catholic (Shadda in #postgresql)

Herzlichen Dank,

das ganze sieht jetzt so aus bei mir:

SELECT cats.joborder.`joborder_id`, cats.joborder.`title`,
cats.joborder.`state`, cats.joborder.`city`, cats.joborder.`type`,
SUM(CASE WHEN cats.extra_field.`field_name`=3D'Referenz' THEN
cats.extra_field.`value` ELSE 0 END)
AS Referenz, SUM(CASE WHEN cats.extra_field.`field_name`=3D'Beginn-
Dauer' THEN cats.extra_field.`value` ELSE 0 END)
AS 'Beginn-Dauer' FROM cats.joborder LEFT JOIN cats.extra_field ON
(cats.joborder.`joborder_id`=3Dcats.extra_field.`data_item_i d`)
GROUP by cats.joborder.`joborder_id`, cats.joborder.`title`

WHERE cats.joborder.`public` =3D "1" AND cats.joborder.`is_admin_hidden`
=3D "0";

You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near 'WHERE cats.joborder.`public` =3D "1" AND
cats.joborder.`is_admin_hidden` =3D "0"' at line 1

Hast Du eine L=F6sung? Es d=FCrfen nur die S=E4tze aus Tabelle a gelesen
werden WHERE cats.joborder.`public` =3D "1" AND
cats.joborder.`is_admin_hidden` =3D "0";

Report this message

#4: Re: Neue Zeile bauen?

Posted on 2008-01-28 13:01:04 by Thomas Rachel

namor schrieb:
^^^^^ was fürn Ding?

> das ganze sieht jetzt so aus bei mir:
>
> SELECT cats.joborder.`joborder_id`, cats.joborder.`title`,
> cats.joborder.`state`, cats.joborder.`city`, cats.joborder.`type`,
> SUM(CASE WHEN cats.extra_field.`field_name`='Referenz' THEN
> cats.extra_field.`value` ELSE 0 END)
> AS Referenz, SUM(CASE WHEN cats.extra_field.`field_name`='Beginn-
> Dauer' THEN cats.extra_field.`value` ELSE 0 END)
> AS 'Beginn-Dauer' FROM cats.joborder LEFT JOIN cats.extra_field ON
> (cats.joborder.`joborder_id`=cats.extra_field.`data_item_id` )
> GROUP by cats.joborder.`joborder_id`, cats.joborder.`title`
>
> WHERE cats.joborder.`public` = "1" AND cats.joborder.`is_admin_hidden`
> = "0";

Das nächste Mal bitte etwas leserlicher formatieren, danke.

Wenn ich das aus dem Wust richtig herauslese, ist da ein GROUP BY... und
danach ein WHERE... . Das geht so nicht - die reihenfolge ist eine
andere. Siehe auch Handbuch auf dev.mysql.com.

HTH,

Thomas

Report this message

#5: Re: Neue Zeile bauen?

Posted on 2008-01-28 14:37:29 by namor

On 28 Jan., 13:01, Thomas Rachel
<glg...@expires-2008-01-31.arcornews.de> wrote:
> namor schrieb:
> ^^^^^ was f=FCrn Ding?
>
> > das ganze sieht jetzt so aus bei mir:
>
> > SELECT cats.joborder.`joborder_id`, cats.joborder.`title`,
> > cats.joborder.`state`, cats.joborder.`city`, cats.joborder.`type`,
> > SUM(CASE WHEN cats.extra_field.`field_name`=3D'Referenz' THEN
> > cats.extra_field.`value` ELSE 0 END)
> > AS Referenz, SUM(CASE WHEN cats.extra_field.`field_name`=3D'Beginn-
> > Dauer' THEN cats.extra_field.`value` ELSE 0 END)
> > AS 'Beginn-Dauer' FROM cats.joborder LEFT JOIN cats.extra_field ON
> > (cats.joborder.`joborder_id`=3Dcats.extra_field.`data_item_i d`)
> > GROUP by cats.joborder.`joborder_id`, cats.joborder.`title`
>
> > WHERE cats.joborder.`public` =3D "1" AND cats.joborder.`is_admin_hidden`=

> > =3D "0";
>
> Das n=E4chste Mal bitte etwas leserlicher formatieren, danke.
>
> Wenn ich das aus dem Wust richtig herauslese, ist da ein GROUP BY... und
> danach ein WHERE... . Das geht so nicht - die reihenfolge ist eine
> andere. Siehe auch Handbuch auf dev.mysql.com.
>
> HTH,
>
> Thomas

Ok, das n=E4chste mal einger=FCckt.
Lies das Ding mal r=FCckw=E4rts.

Roman

Report this message

#6: Re: Neue Zeile bauen?

Posted on 2008-01-28 15:43:53 by Thomas Rachel

namor schrieb:
^^^^^ ?

> Ok, das nächste mal eingerückt.
> Lies das Ding mal rückwärts.

Hab ich. Meinen Hinweis auf Reihenfolge von WHERE und GROUP BY sowie auf
das Handbuch hast Du gelesen?

Thomas

Report this message

#7: Re: Neue Zeile bauen?

Posted on 2008-01-28 22:03:16 by namor

Hallo Thomas,

hab ich gelesen mit dem Ergebniss dass die Abfrage l=E4uft.

Leider Zeigt sie in der Ausgabe durch ...


1.SELECT cats.joborder.`joborder_id`, \
cats.joborder.`title`, \
cats.joborder.`state`, \
cats.joborder.`city`, \
cats.joborder.`type`, \
2.SUM(CASE WHEN cats.extra_field.`field_name`=3D'Referenz' \
3.THEN cats.extra_field.`value` ELSE '' END) \
4.AS Referenz, \
5.SUM(CASE WHEN cats.extra_field.`field_name`=3D'Beginn-Dauer' \
6.THEN cats.extra_field.`value` ELSE '' END) \
7.AS 'Beginn-Dauer' \
8.FROM cats.joborder \
9.LEFT JOIN cats.extra_field \
10.ON (cats.joborder.`joborder_id`=3Dcats.extra_field.`data_item_i d`) \
11.WHERE cats.joborder.`public` =3D "1" \
12.AND cats.joborder.`is_admin_hidden` =3D "0" \
13.GROUP by cats.joborder.`joborder_id`, cats.joborder.`title`;

=2E.. nur die numerischen Werte an.

_2 "Text A" xy 1A2B FL 0 0
_3 "Text B" zh hallo C2H 123 456

das bedeutet in Satz _2 "Text A" ...

steht tats=E4chlich anstatt 0 0 ein String, String Eintrag.

Das fragliche Tabellen- Attribut cats.extra_field.`value` ist vom Typ
TEXT.

Die Anwendung (PHP) schreibt die Daten korrekt in die Tabelle.

Der Query Browser zeigt die korrekten Werte, von den Umlauten einmal
abgesehen.

charset der DB ist utf-8, die der PHP Anwendung ist dezeit unbekannt
(US Amerika).


Ich habe kr=E4ftig ge-Googled, jetzt raucht mir der Kopf ;)

Allerdings habe ich auch viel interessantes gefunden, dass mir leider
aktuell nicht wirklich hilft.

Ich habe versucht eine Entsprechung f=FCr SUM (intuitiv sag ich mal das
ist es nicht) zu finden, leider ohne Ergebnis.

Roman

Report this message