Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

SQL multiplikation über 2 tabellen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
FuchsT
PostRank 5
PostRank 5
Beiträge: 247
Registriert: 21.02.2005, 15:33
Wohnort: bei Wien

Beitrag von FuchsT » 09.08.2007, 06:23

Hallo,

ich scheitere gerade an einer Multiplikation in mySQL, die über 2 Tabellen geht.
Ich denke ich muss das mit einem JOIN lösen, aber ich schaffs einfach nicht.
Ich würde sowas benötigen (ist natürlich vollkommen falsch, nur zum Verständnis)
(select count(*) from Table1 where xxx=yyy) * (select feld from table2 where aaa=bbb)

In PHP könnte man diese Multiplikation sicher auch lösen, aber ich hätte es einfach gerne in SQL.
Also wer einen Tipp hat... Bitte!

Danke
Thomas
Wirtschaftslexikon Online - Wirtschaftsbegriffe einfach und verständlich erklärt!
Linktauschpartner (auch für andere Bereiche) gesucht.

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

King of Darkness
PostRank 2
PostRank 2
Beiträge: 40
Registriert: 27.06.2007, 10:45

Beitrag von King of Darkness » 09.08.2007, 07:59

Hallo,

ich bin mir nicht ganz sicher
aber versuch das mal:
select feld*(select count(*) from Table1 where xxx=yyy) from table2 where aaa=bbb

ich bin mir sicher das es nicht wirklich die performanteste lösung ist (falls es überhaupt geht)
aber dort macht er dann pro zeile den Count -> langsam

was anders fällt mir aber auf die schnelle nicht ein

meine Frage jetzt an dich, wozu machst du das, bzw. beschreib mal deine absichten etwas genauer

Gruß
King of Darkness

FuchsT
PostRank 5
PostRank 5
Beiträge: 247
Registriert: 21.02.2005, 15:33
Wohnort: bei Wien

Beitrag von FuchsT » 09.08.2007, 08:03

Hallo,

Danke für den Code. Ich werde ihn mal testen.
Meine Absicht dahinter ist folgende:
In Tabelle1 stehen alle Aktionen 1 Datensatz ist eine Aktion.
In Feld von Tabelle2 steht der Preis pro Aktion.

Das muss ich multplizieren.

gruß
Thomas
Wirtschaftslexikon Online - Wirtschaftsbegriffe einfach und verständlich erklärt!
Linktauschpartner (auch für andere Bereiche) gesucht.

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


FuchsT
PostRank 5
PostRank 5
Beiträge: 247
Registriert: 21.02.2005, 15:33
Wohnort: bei Wien

Beitrag von FuchsT » 09.08.2007, 08:19

hi,

geht leider nicht. hab alle möglichen (und unmöglichen) combinationen probiert.
immer ein syntaxfehler.

noch ideen?

gruß
Thomas
Wirtschaftslexikon Online - Wirtschaftsbegriffe einfach und verständlich erklärt!
Linktauschpartner (auch für andere Bereiche) gesucht.

King of Darkness
PostRank 2
PostRank 2
Beiträge: 40
Registriert: 27.06.2007, 10:45

Beitrag von King of Darkness » 09.08.2007, 09:31

Hi,

ich nehm mal stark an das du das mit Ids verbunden hast:

SELECT SUM(table2.wert) FROM table1 INNER JOIN table2 ON table1.wert_id = table2.id GROUP by table1.wert_id

vielleicht hast ja noch Userids oder sowas dann GROUP BY table1.userid, table1.wert_id

ist erstmal n anderer ansatz:
du holst dir erstmal jeden datensatz gruppierst dann nach der Id oder dem namen oder sonst was und summierst dann die werte auf


Gruß
King of Darkness

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 09.08.2007, 12:40

Das letzte von King of Darkness sollte funktionieren, wobei table2.wert der Preis ist.

Was steht denn konkret in deinen Tabellen drin FuchsT? Dann könnte man das ein wenig besser erklären was du wie tun musst.

FuchsT
PostRank 5
PostRank 5
Beiträge: 247
Registriert: 21.02.2005, 15:33
Wohnort: bei Wien

Beitrag von FuchsT » 09.08.2007, 18:33

Hallo,

also ich steig irgendwie aus...
Ich bedanke mich vielmals für die mühe, aber ich mach das - denke ich - lieber in PHP.
Ich erklär aber noch weiter, ev. wollt ihr ja noch diskutieren.

Es geht im prinzip darum, dass andere leute links für mich tauschen und die daten für den link einer db eingetragen werden.
Tabelle1 (ein bißchen vereinfacht)
id|link|backlink|date|user
Tabelle2
id|user|email|preisprolink|

ich muss nun alle getauschen links (summe der tabelle1 für den user) mit dem preis pro link (tabelle2 preisprolink) multipilzieren.
so viel muss ich dann für die links bezahlen.

im vorschlag von King of Darkness kapier ich das mit den IDs nicht.
die IDs haben keinen bezug zueinander.
der einzige bezug ist der user.

ich habs jetzt mit 2 db abfragen und einer php multiplikation gelöst.
aber wenn noch wer einen vorschlag posten will... lernwillig bin ich immer.

Danke!
Thomas
Wirtschaftslexikon Online - Wirtschaftsbegriffe einfach und verständlich erklärt!
Linktauschpartner (auch für andere Bereiche) gesucht.

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 09.08.2007, 19:29

Sehe ich das richtig dass es viele Einträge in Tabelle1 (n) gibt die sich dann auf 1 Eintrag in Tabelle 2 beziehen? (1)? Jedem User ist also genau ein PreisProLink zugewiesen, auf den dann mehrmals in der Tabelle1 "verlinkt" wird?

FuchsT
PostRank 5
PostRank 5
Beiträge: 247
Registriert: 21.02.2005, 15:33
Wohnort: bei Wien

Beitrag von FuchsT » 10.08.2007, 06:05

genau.
ein user hat einen datensatz.
der getauschte link hat einen datensatz
Wirtschaftslexikon Online - Wirtschaftsbegriffe einfach und verständlich erklärt!
Linktauschpartner (auch für andere Bereiche) gesucht.

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 10.08.2007, 12:02

dann sollte in tabelle1 eigentlich die ID des users und nicht der user selbst gespeichert werden.

Code: Alles auswählen

SELECT SUM(table2.preisprolink) FROM table1 INNER JOIN table2 ON table1.user = table2.user GROUP by table1.user
Aber damit solltest du deine gesuchen Werte bekommen.

FuchsT
PostRank 5
PostRank 5
Beiträge: 247
Registriert: 21.02.2005, 15:33
Wohnort: bei Wien

Beitrag von FuchsT » 10.08.2007, 15:18

das funktioniert!!!
super. vielen dank!

ich versuchs mal zu erklären.
du "verbindest" (JOIN) Tabelle1 mit Tabell2 über den user
und summierst dann einfach den preisprolink.
richtig?

der user muss sich einloggen und es wird eine session generiert.
die session wird aber immer mit dem user gemacht. deshalb hab ich auch den user gespeichert. das war ein tutorial. ich bin nicht sicher wie das zu ändern wäre.

aber dein code hat mir wieder ein bißchen mehr die augen geöffnet.

danke & gruß
Thomas
Wirtschaftslexikon Online - Wirtschaftsbegriffe einfach und verständlich erklärt!
Linktauschpartner (auch für andere Bereiche) gesucht.

Southmedia
PostRank 10
PostRank 10
Beiträge: 7322
Registriert: 20.07.2003, 19:56

Beitrag von Southmedia » 14.08.2007, 11:39

Ich hole alle Benutzer. Dann hole ich die zu jedem Benutzer passenden Link-Einträge und kombiniere diese beiden Tabellen. Dann berechne ich die Summe der Linkpreise (SUM) pro Nutzer (GROUP BY). Fertig :)

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag