AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL WHERE über mehrere Einträge
Thema durchsuchen
Ansicht
Themen-Optionen

SQL WHERE über mehrere Einträge

Ein Thema von igel457 · begonnen am 3. Aug 2010 · letzter Beitrag vom 5. Aug 2010
Antwort Antwort
Seite 2 von 2     12   
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#11

AW: SQL WHERE über mehrere Einträge

  Alt 4. Aug 2010, 22:47
SQL-Code:
SELECT *
FROM posts p
WHERE EXISTS (SELECT *
                FROM post_topics
                WHERE post_id = p.post_id
                  AND topic_id = 1)
  AND EXISTS (SELECT *
                FROM post_topics
                WHERE post_id = p.post_id
                  AND topic_id = 4)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#12

AW: SQL WHERE über mehrere Einträge

  Alt 4. Aug 2010, 23:41
Ein join der Tabelle mit sich selbst?
SQL-Code:
select
*
from
Post_Topics as a,
Post_Topics as b
where
a.topicid=1
and
b.topicid=4
and
a.postid=b.postid

Geändert von mkinzler ( 5. Aug 2010 um 06:23 Uhr) Grund: Code-Tag durch SQL-Tag ersetzt
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: SQL WHERE über mehrere Einträge

  Alt 5. Aug 2010, 06:23
Da bekommst du eine wilde Kombination von Einträgen, welche nichts miteinander zu tun haben
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#14

AW: SQL WHERE über mehrere Einträge

  Alt 5. Aug 2010, 10:03
Okay, nochmal "Selfjoin" nachgelesen, korrigierte Fassung:
Code:
select post_id from
Post_Topics as a
join Post_Topics as b on post_id
where a.topic_id = 1 and b.topic_id = 4

Geändert von jfheins ( 5. Aug 2010 um 10:12 Uhr)
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#15

AW: SQL WHERE über mehrere Einträge

  Alt 5. Aug 2010, 11:33
Ohne joins
SQL-Code:
select
    post_id
from
    post_topics
where
    Topics_id in (1,4)
group by
    post_id
having
    count(*)=2
man müsste mal schauen was schnell läuft auf deinen db system.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott

Geändert von mkinzler ( 5. Aug 2010 um 11:51 Uhr) Grund: Code-Tag durch SQL-Tag ersetzt
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#16

AW: SQL WHERE über mehrere Einträge

  Alt 5. Aug 2010, 13:16
Hallo,

die Lösung von Generic gefällt mir sehr gut, da sie eigentlich genau dem entspricht, was ich vorher mit meinem PHP Skript gemacht habe: Alle Topic_IDs als Array in ein Array mit Post_Id als Schlüssel einzutragen und dann die Anzahl der Elemente zu zählen.

Vielen Dank für die Lösungen,
Andreas
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#17

AW: SQL WHERE über mehrere Einträge

  Alt 5. Aug 2010, 13:58
Nur der Vollständigkeit halber:

Die Lösung von omata, jfheins (beide) und mir funktionieren auch, allerdings hat die Lösung von generic (unter Oracle 11G) den besseren Ausführungsplan. Die Lösung von generic funktioniert allerding nur sollange es in post_topics keine doppelten Kombination von post_id und topic_id gibt.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#18

AW: SQL WHERE über mehrere Einträge

  Alt 5. Aug 2010, 14:00
in dem Fall kannst du die Menge erst einmal mit distinct in einen inneren Select platt machen, um dann das having auszuführen.

Join in MYSQL sind übrigens immer doof. MYSQL neigt dazu ständig temp.Tabellen anzulegen. -> langsam
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz