Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

MySQL Ersatz für EXCEPT

Frage Entwicklung Datenbanken

Mitglied: ChrisFah

ChrisFah (Level 1) - Jetzt verbinden

09.07.2014, aktualisiert 13.07.2014, 1007 Aufrufe, 2 Kommentare

hallo leute,
wieder einmal wende ich mich hilfesuchend an Euch:

ich habe zwei Mysql queries , deren Ergebnis sich ausschlissen soll:
$query1 = 'SELECT kw, path FROM kw WHERE lang_id = '.intval($l['id']).' AND plain_kw REGEXP "^[0-9]" AND active = 1 AND use_as = 0 ORDER BY count DESC, kw ASC LIMIT 200';

$query2 = 'SELECT id, kw, path FROM kw WHERE lang_id = '.intval($l['id']).' AND plain_kw REGEXP "^[0-9]" AND active = 1 AND use_as = 0 ORDER BY date_added DESC LIMIT 200';

Beide Abfragen suchen in der gleichen tabelle, die erste nach den 200 meisten 'counts' , die zweite nach den 200 neuesten Einträgen.
Als Ergebnis suche ich jene 200 der ersten Abfrage, die NICHT in der zweiten Abfrage gelistet sind.

MIt (query1) EXCEPT (query2) geht es unter Mysql nicht.

Auch folgendes klappt nicht, da Mysql in Subqueries kein LIMIT unterstützt.
$query = 'SELECT id, kw, path FROM kw
WHERE id NOT IN
(SELECT id FROM kw WHERE lang_id = '.intval($l['id']).' AND plain_kw REGEXP "^[0-9]" AND active = 1 AND use_as = 0 ORDER BY date_added DESC LIMIT 200)
AND lang_id = '.intval($l['id']).' AND plain_kw REGEXP "^[0-9]" AND active = 1 AND use_as = 0 ORDER BY count DESC, kw ASC LIMIT 200 ';


Hat da wer einen Tip für mich?

Lg, Chris
Mitglied: ChrisFah
09.07.2014 um 22:50 Uhr
Ich denke, ich hab eine Lösung gefunden:

$query = 'SELECT id, kw, path FROM kw a
WHERE NOT EXISTS
(SELECT id FROM kw b WHERE plain_kw REGEXP "^[0-9]" AND lang_id = '.intval($l['id']).' AND active = 1 AND use_as = 0 AND a.id = b.id ORDER BY date_added DESC LIMIT 200)
AND plain_kw REGEXP "^[0-9]" AND lang_id = '.intval($l['id']).' AND active = 1 AND use_as = 0 ORDER BY count DESC, kw ASC LIMIT 200 ';

So scheint es auf den ersten Blick zu klappen. Vielleicht kann noch mal jemand ein Auge draufwerfen... Danke!

Lg, Chris
Bitte warten ..
Mitglied: colinardo
LÖSUNG 09.07.2014, aktualisiert 13.07.2014
Hi,
probier mal das hier:
01.
SELECT a.id, a.kw, a.path  
02.
FROM kw as a 
03.
LEFT JOIN ( 
04.
  SELECT id  
05.
  FROM kw  
06.
  WHERE lang_id = '.intval($l['id']).'  
07.
  AND plain_kw REGEXP "^[0-9]" 
08.
  AND active = 1  
09.
  AND use_as = 0  
10.
  ORDER BY date_added DESC LIMIT 200 
11.
) AS b USING (id) 
12.
WHERE lang_id = '.intval($l['id']).'  
13.
AND plain_kw REGEXP "^[0-9]"  
14.
AND active = 1 
15.
AND use_as = 0 
16.
AND b.id IS NULL 
17.
ORDER BY count DESC, kw ASC LIMIT 200 ';
Grüße Uwe
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Apache Server
gelöst Fehler beim Import einer DB vom anderen MySQL-Server (2)

Frage von zeroblue2005 zum Thema Apache Server ...

Datenbanken
Tool oder Dienst für E-Mail (POP3) zu MySQL Datenbank (3)

Frage von bounee zum Thema Datenbanken ...

Datenbanken
Unvollständiger mysql dump (7)

Frage von AS-N00 zum Thema Datenbanken ...

Heiß diskutierte Inhalte
DSL, VDSL
gelöst DSL 200m verlängern (16)

Frage von Angela44 zum Thema DSL, VDSL ...

LAN, WAN, Wireless
Per Script auf UniFi-controller zugreifen und WPA2-Key ändern (11)

Frage von Winfried-HH zum Thema LAN, WAN, Wireless ...

Windows Server
SBS 2011 Standard virtualisieren (11)

Frage von HeinrichM zum Thema Windows Server ...

Exchange Server
gelöst DHCP Sever MS Server 2012 Problem (10)

Frage von Florian86 zum Thema Exchange Server ...